我想创建一个包含大量字段和一个按钮的指令,当用户单击按钮时,填充的信息应该能够传递到指令之外的搜索函数。
var app = angular.module('myapp', []);
app.controller("myCtrl", function($scope) {
$scope.doSearch = function(query) {
query.order="asc";
console.log(query); //do api call
}
});
app.directive('queryBuilder', function() {
return {
restrict: 'E',
scope: {
queryFn: '&'
},
template: "<button ng-click='directiveClick()'>Click</button>",
replace: true,
link: function(scope, elm, attrs) {
scope.directiveClick = function(){
var query={name:"bill",age:12}
scope.queryFn(query);
}
}
}
});view.html
<div ng-controller="myCtrl">
<query-builder query-fn="doSearch()"></query-builder>
</div>query参数在doSearch()中未定义,如何将链接函数中的query对象带到myCtrl?
我想到的另一个方法是使用双向绑定查询变量,而不是传递搜索函数。哪条路更好?
请参阅普朗克
发布于 2015-10-20 22:22:31
让指令调用其作用域以外的函数的方法是完全有效的。但是,为了使通信工作有效,您需要:
1,在使用指令时指定参数名。
<query-builder query-fn="doSearch(query)"></query-builder>2 .在指令中,当调用函数时,必须传递一个对象,其中键是#1中的参数名。
scope.directiveClick = function(){
var query={name:"bill",age:12}
scope.queryFn({query: query});
}柱塞
https://stackoverflow.com/questions/33247742
复制相似问题