考虑这个小提琴:Fiddle 1 http://jsfiddle.net/martijngr/Qvu5u/1/当您选择日期时,您会注意到上面的文本没有更新。这是因为我必须使用列表中的一个对象,如下所示:Fiddle 2 http://jsfiddle.net/Qvu5u/3/(简化)。
但是,另一方面,这确实有效,没有点:Fiddle 3 http://jsfiddle.net/martijngr/DnKs5//
有人能解释一下小提琴 1 和小提琴 3 之间有什么区别吗?我读过有关原型继承的内容(理解范围 https://github.com/angular/angular.js/wiki/Understanding-Scopes),但我不理解这种行为。
小提琴3:
HTML:
<div ng-controller="MyCtrl">
Hello, {{name}}!
<button ng-click="visible = !visible">Toggle</button>
<div ng-show="visible">
Some content
<sample visible="visible"></sample>
</div>
</div>
JavaScript:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.name = 'Superhero';
$scope.visible = true;
}
myApp.directive("sample", function(){
return {
restrict: 'E',
template: '<span ng-click="hide()" style="cursor: pointer;">X</span>',
scope:{
visible: '='
},
link: function(scope, element, attributes){
scope.hide = function(){
console.log(scope.visible);
scope.visible = false;
}
}
}
});
如果您的指令创建了一个独立作用域(并且没有中间作用域),并且它使用=
对于双向数据绑定,您不需要使用对象属性 - 即,您不需要“点”来使其工作。
在 Fiddle 1 和 2 中,ng-repeat 创建一个中间(子)作用域,该作用域原型继承自 MyCtrl 作用域。在这种情况下,您需要使用对象属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)