我正在从这个网站学习:
https://egghead.io/lessons/angularjs-understanding-isolate-scope
示例代码执行此操作:
js code:
// Some directive named kid defined here
.
.
.
template: '<input type="text" ng-model="chore">' +
' {{chore}}' +
' <div class="button" ng-click="done({chore:chore})">I\'m done!</div>'
.
.
.
html代码:
<div ng-app="choreApp">
<div ng-controller="ChoreCtrl">
<kid done="logChore(chore)"></kid>
</div>
</div>
这个({key: value})
语法是什么?如果我改变键或值,整个事情就会停止工作。你如何正确使用它?有什么规则?
答案 0 :(得分:0)
TL;博士
在html中:
<your-directive your-attribute="yourMethod(yourArg)">
<your-directive your-attribute="yourMethod(yourOtherArg)">
在js:
scope: {yourAttribute: '&'}
template: '<div ng-click"yourAttribue({yourArg : whateverValueYouWantItToRepresent,
yourOtherArg : someValueYouAlsoWantToRepresent})">
基本上,它允许您用您想要的任何表达替换预定的“键”。不确定什么时候会有用。这可以让您深入isolate scope
。
答案 1 :(得分:-1)
键:将方法传递给指令时方法参数需要值表示法。例如,您可能希望在单击指令元素时提供要执行的回调方法:
控制器中的:
$scope.aMethod = function(arg1) {
...
};
HTML中的:
<div my-directive some-method="aMethod()">
指令:
.directive('myDirective', function(){
scope: {
aomeMethod: '&'
}
link: function (scope, elem, attrs) {
elem.bind('click', function (){
scope.someMethod({arg1: 123});
});
}
});
控制器中定义的方法采用参数。但是,当您通过html将方法传递给指令时,请注意空括号。该指令不知道这些args或它们应该被调用的内容,因此需要明确地传递arg键和值。