gpt4 book ai didi

javascript - 嵌套指令的 Angular Isolate 范围

转载 作者:行者123 更新时间:2023-12-03 10:23:51 24 4
gpt4 key购买 nike

我正在尝试设置一个带有三个指令的 Angular 应用程序 - 容器、getter 和 setter。我把它放在 http://plnkr.co/edit/CoYLuVbiZTFWvNsN5r5L?p=preview

<container>
<getter name="first"></getter>
<getter name="second"></getter>
<setter name="setter"></setter>
</container>

Container 具有一个包含变量 value 的作用域,该变量可以由 gettersetter 读取。 getter 显示值,而 setter 既显示又更改值。

    angular.module("app").directive('container', function() {
return {
scope: {},
template: '<h1>Container <input ng-model="value"/></h1><div ng-transclude>SCOPED1</div>',
transclude: true,
controller: ["$scope", "$window", function($scope, $window){
$scope.value = "Hello"
}]
};
});

gettersetter 都有自己的隔离作用域,但也有到 container 作用域的双向绑定(bind)来获取和设置

    angular.module("app").directive('getter', function() {
return {
require: '^container',
scope: {
name: '@',
value:'='
},
template: '<p>I am getter {{name}}, I got {{value}}</p>'
};
});

目前,gettersetter 可以使用 $scope.$parent.$parent.value 访问 container 作用域 但这似乎太笨重了。我认为使用 scope:{value:'='} 会设置两种方式的绑定(bind),但显然不是。

我做错了什么?

http://plnkr.co/edit/CoYLuVbiZTFWvNsN5r5L?p=preview

最佳答案

指令隔离作用域不会自动链接到父作用域中的变量。您必须告诉指令 value 应该是父作用域中的 value,与提供指令名称的方式相同。

<container value="value">
<getter name="first" value="value"></getter>
<getter name="second" value="value"></getter>
<setter name="setter" value="value"></setter>
</container>

关于javascript - 嵌套指令的 Angular Isolate 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29496217/

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