我在指令中有以下内容
scope.actions = {
getSearch: searchResultPageService.getSearch(scope.keywords, scope.settings)
};
模板如下
<button class="btn btn-primary" type="button" data-ng-click="actions.getSearch()">Send</button>
在我的服务中,我只检查 scope.keywords
和 scope.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/