demoApp是我的模块,非常简单。我已经按照一个很好的教程解释了自定义指令的创建,但是出现了一些东西,这是隔离的范围,可以保持范围的隔离。
这是angularJS代码:
demoApp.directive("superhero", function() {
return {
restrict: 'E',
scope: {},
controller: function ($scope) {
$scope.abilities = [];
this.addStrength = function() {
$scope.abilities.push("strength");
}
this.addSpeed = function() {
$scope.abilities.push("speed");
}
this.addFlight = function() {
$scope.abilities.push("flight");
}
},
link: function (scope, element) {
element.addClass("button");
element.bind("mouseenter", function() {
console.log(scope.abilities);
})
}
}
});
demoApp.directive("strength", function() {
return {
require:"superhero", //require superhero controller
link: function (scope, element, attrs, superheroController) {
superheroController.addStrength();
}
}
});
demoApp.directive("speed", function() {
return {
require:"superhero",
link: function (scope, element, attrs, superheroController) {
superheroController.addSpeed();
}
}
});
demoApp.directive("flight", function() {
return {
require:"superhero",
link: function (scope, element, attrs, superheroController) {
superheroController.addFlight();
}
}
});
那么在视图中我这样做:
<superhero flight speed strength>Superman</superhero>
<superhero speed>Flash</superhero>
<superhero strength>Hulk</superhero>
现在,如果我想访问每个子节点的指令控制器范围会发生什么?想象一下,我想在视图中使用{{abilities}}绑定及其各自的属性?像这样:
<superhero flight speed strength>Superman {{abilities}}</superhero>
我该怎么做?无法弄清楚。我应该使用隔离财产吗?喜欢:
scope: {
abilities: "&"
},
事实是,在阅读和阅读这些孤立的范围之后,我还无法理解其用法和差异。
更新:
看起来这是来自AngularJS 1.2.3的“bug”,因为在JSFiddle提供的1.1.1版本中它可以工作。
也许它以不同的方式得到支持?我怎么能在1.2.3版本中做到这一点?
答案 0 :(得分:1)
根据文件
https://github.com/angular/angular.js/blob/master/CHANGELOG.md#breaking-changes-1
我必须设置范围:true而不是范围:{}