gpt4 book ai didi

angularjs - 如何将复杂属性从父范围继承到指令的隔离范围中

转载 作者:行者123 更新时间:2023-12-01 09:01:53 24 4
gpt4 key购买 nike

在查看了 AngularJS(和相关)文档和其他有关指令内隔离范围的 stackoverflow 问题后,我仍然有点困惑。为什么我不能在父范围和指令隔离范围之间进行双向绑定(bind),其中父范围属性是对象而不是属性?我应该只使用 scope.$parent 之外的所需属性吗?这似乎是错误的。提前感谢您的帮助。

相关的 fiddle 是here .

HTML:

<div ng-app="myApp">
<div ng-controller="myCtrl">
<div my-directive>{{test.name}}</div>
</div>
</div>

JavaScript:

var myApp = angular.module('myApp', []);

myApp.controller('myCtrl', function ($scope) {
$scope.test = {name:"name", value:"value"};
});

myApp.directive("myDirective", function () {
return {
replace: true,
restrict: 'A',
scope: {test: '='},
template: '<div class="parent"><div>This is the parent Div.</div><div>Value={{test}}</div></div>',
link: function (scope, element, attrs) {
console.log("scope.test=["+scope.test +"]");
console.log("scope.$parent.test=["+scope.$parent.test.name+"]");
}
};
});

最佳答案

对于使用隔离作用域的指令,属性用于指定指令隔 ionic 作用域需要访问哪些父作用域属性。 '=' 提供双向绑定(bind)。 '@' 提供“单向字符串”。 '&' 提供单向表达式。

要让您的指令(双向绑定(bind))访问父范围对象属性 test,请使用以下 HTML:

<div my-directive test="test"></div>

使用不同的名称可能更有指导意义:

<div my-directive some-obj-prop="test"></div>

然后在你的指令中:

scope: { localDirProp: '=someObjProp'},
template: '<div ...>Value={{localDirProp}}...',

Isolate 作用域在原型(prototype)上并不继承自父作用域,因此它无权访问任何父作用域的属性(除非使用了“@”或“=”或“&”)。使用 $parent 仍然是访问父作用域的一种方式,但不是通过原型(prototype)继承。 Angular 在作用域上创建了这个特殊的 $parent 属性。通常(即最佳实践),不应使用它。

关于angularjs - 如何将复杂属性从父范围继承到指令的隔离范围中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15536435/

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