javascript - AngularJS ngClick 触发服务但没有

标签 javascript angularjs

我在指令中有以下内容

scope.actions = {
    getSearch: searchResultPageService.getSearch(scope.keywords, scope.settings)
};

模板如下

<button class="btn btn-primary" type="button" data-ng-click="actions.getSearch()">Send</button>

在我的服务中,我只检查 scope.keywordsscope.settings 是否使用 console.log 传递,但没有输出。

我在使用 ngClick 时做错了什么

(function () {

    'use strict';

    angular
        .module('app.search')
        .factory('searchResultPageService', [
            '$timeout',
            function ($timeout) {
                var $module = {

                    getSearch: function(keywords, settings){
                        console.log(keywords);
                        console.log(settings);

最佳答案

scope.actions.getSearch 是调用 searchResultPageService.getSearch 返回的结果,而不是函数本身。

您需要将对该函数的引用传递给 View :

scope.actions = {
    getSearch: searchResultPageService.getSearch
};

然后按如下方式修改 View 的点击处理程序:

<button class="btn btn-primary" type="button" data-ng-click="actions.getSearch(keywords, settings)">Send</button>

或者创建一个发送到 View 的新匿名函数:

scope.actions = {
    getSearch: function() {
        searchResultPageService.getSearch(scope.keywords, scope.settings);
    }
};

在这种情况下,您的 View 代码保持不变。就我个人而言,我会选择第二个选项。

关于javascript - AngularJS ngClick 触发服务但没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652287/

相关文章:

javascript - 来自 React 组件的 AJAX 请求

javascript - 在AIR中卸载声音,系统内存变满

javascript - 如何使用 Jasmine 的 toEqual(jasmine.objectContaining) 方法来比较数组?

angularjs - React 等价于 ng-repeat

javascript - 浏览器刷新后,AngularJS 设置的 Cookie 将被忽略

javascript - 知道是否点击了 facebook 的按钮

javascript - 在没有 jQuery 和使用 createElement 的情况下展开元素

javascript - vue组件如何添加外部脚本?

javascript - 未启用 CORS 的外部 API 的解决方法?

angularjs - AngularJS HTTP 在缓存对象时将对象存储在哪里?