我通过html属性将控制器$ scope函数传递给指令,但由于某种原因,该指令认为该函数是一个字符串。任何提示?
HTML
<modal show='createCustomer' create-new-customer='createNewCustomer()'></modal>
指令
function modalDialog() {
return {
restrict: 'AE',
scope:{
createNewCustomer: '&'
},
replace: true,
transclude: true,
link: function(scope, element, attrs) {
scope.createNewCustomer = attrs.createNewCustomer;
console.log(typeof scope.createNewCustomer)
},
templateUrl: "./views/directive_templates/modal.html"
};
}
$ scope function
$scope.createNewCustomer = function(){
alert('yo')
}
最佳, 奥斯汀
答案 0 :(得分:0)
您的代码应为:
TupleOfTuples
最有可能立即调用函数并传入结果
答案 1 :(得分:0)
在您的指令中,您已经通过在隔离范围中使用var newArray = [
['hello',['tom']],
['world',['tom','bob']],
['foo',['bob','jim']],
['bar',['jim']],
];
参数绑定了该函数scope.createNewCustomer
。但是,当您通过&
重新分配函数时,实际上会使用字符串值覆盖该函数。 attrs
只是一个键值对的数组,它是元素中每个属性的字符串表示形式。
答案 2 :(得分:0)
AngularJs指令允许您使用&#39;&amp;&#39;范围内的方法有2种方法。第一种方法允许你在隔离指令内传递参数。第二种方法允许你在指令之外传递参数但是调用INSIDE ISOLATED DIRECTIVE.Like
<div my-dir func="myFunc(arg1,arg2,..)"></div>
<div my-dir func="myFunc(value1,value2,..)"></div>
如果你想要更多,这里有一篇很酷的文章,其中有一些例子:
http://www.w3docs.com/snippets/angularjs/angularjs-directive-scope-method.html