AngularJS ngClick可以解雇服务,但不会

时间:2015-07-27 11:47:31

标签: 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>

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

我的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);

2 个答案:

答案 0 :(得分:2)

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

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

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

修改您的视图点击处理程序,如下所示:

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

创建一个新的匿名函数,该函数将发送到视图:

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

在这种情况下,您的视图代码保持不变。我个人会在那里选择第二个选项。

答案 1 :(得分:0)

您正在影响

searchResultPageService.getSearch(scope.keywords, scope.settings) 

结果

actions.getSearch

这不是一种方法,如果

除外
searchResultPageService.getSearch(scope.keywords, scope.settings)

返回一个方法 - 我有点怀疑 -

试试吧:

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