gpt4 book ai didi

javascript - 我想两个绑定(bind)一个指令的范围,它似乎只有一种方式绑定(bind)?

转载 作者:行者123 更新时间:2023-11-28 18:41:04 24 4
gpt4 key购买 nike

我想做的非常简单:以两种方式绑定(bind)指令的范围。这意味着给定一个带有 $scope.name='Foo' 的父 Controller ParentCtrl 和一个带有 scope: {name: '='} 的指令我希望当我从指令的链接函数中更改 scope.name='Bar' 或从给定指令的 Controller 中更改 $scope.name='Bar' 时期望 ParentCtrl 的模板能够反射(reflect)新的 $scope.name,否则它只是从父作用域绑定(bind)到指令作用域的一种方式。不幸的是,这不是我得到的。我在这里错过了什么吗?这是说明该问题的 plunker 链接:

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

代码:

angular.module('docsSimpleDirective', [])
.controller('ParentCtrl', ['$scope', function($scope) {
$scope.name = "Bernie Sanders";
$scope.occupation = "Arsonist";
}])
.directive('myCustomer', function() {
return {
template: 'Name: {{name}} Occupation: {{occupation}}',
scope: {
name: '=',
occupation: '='
},
link: function(scope, element, attrs) {
scope.name = "Donald Drumpf";
scope.occupation = "Fascist pig";
scope.$apply();
}
};
});

模板:

<body ng-app="docsSimpleDirective" ng-controller="ParentCtrl">
Name: {{name}}, Occupation: {{occupation}}<br />

<div ng-controller="ParentCtrl">
<div my-customer name="name" occupation="occupation"></div>
</div>
</body>

最佳答案

问题是您有多个 ParentCtrl 实例,第一个位于 body 上,然后位于内部 div 之一上。

因此,当您在范围变量上声明 name 时,您将其声明为原始类型,因此覆盖内部 Controller 内的值将简单地为 $scope.name< 提供新的引用 值。原型(prototype)继承仅在对象不在原始类型变量上的情况下才会遵循。

在页面上定义 ng-model 时,您应该遵循点规则

也不需要在指令链接函数内运行摘要循环。这最终会抛出错误。请从那里删除它。

关于javascript - 我想两个绑定(bind)一个指令的范围,它似乎只有一种方式绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36072500/

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