gpt4 book ai didi

angularjs - 为什么双向绑定(bind)有时可以在不使用 Angular 中的点的情况下工作?

转载 作者:行者123 更新时间:2023-12-02 00:06:40 25 4
gpt4 key购买 nike

考虑这个 fiddle :Fiddle 1当您选择一个日期时,您会注意到它上面的文本没有更新。这是因为我必须在列表中使用一个对象,如下所示:Fiddle 2 (简化)。

但是,另一方面,这确实有效,没有点:Fiddle 3

有人可以解释一下 fiddle 1 和 fiddle 3 之间的区别吗?我读过原型(prototype)继承 ( unerstanding scopes ),但我不明白这种行为。

fiddle 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;
}
}
}
});

最佳答案

如果你的指令创建了一个隔离作用域(并且没有中间作用域),并且它使用 = 进行双向数据绑定(bind),你不需要使用对象属性——也就是说,你不需要不需要一个“点”来让它工作。

在 Fiddle 1 和 2 中,ng-repeat 正在创建一个中间(子)作用域,其原型(prototype)继承自 MyCtrl 作用域。在这种情况下,您需要使用对象属性。

关于angularjs - 为什么双向绑定(bind)有时可以在不使用 Angular 中的点的情况下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18024809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com