Javascript I';我想两个绑定一个指令';s范围,它似乎是唯一的单向边界?

Javascript I';我想两个绑定一个指令';s范围,它似乎是唯一的单向边界?,javascript,angularjs,angularjs-directive,angularjs-scope,prototypal-inheritance,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Prototypal Inheritance,我想做的很简单:双向绑定指令的作用域。这意味着给定一个具有$scope.name='Foo'的父控制器ParentCtrl,以及一个具有作用域:{name:'='}的指令我希望当我从指令的链接函数中更改scope.name='Bar'或从给定指令的控制器中更改$scope.name='Bar'时,ParentCtrl的模板将反映新的$scope.name,否则,它只是从父范围到指令范围的单向绑定。不幸的是,这不是我得到的。我是不是遗漏了什么?下面是一个plunker链接,说明了这个问题: 守则

我想做的很简单:双向绑定指令的作用域。这意味着给定一个具有
$scope.name='Foo'
的父控制器
ParentCtrl
,以及一个具有
作用域:{name:'='}的指令
我希望当我从指令的链接函数中更改
scope.name='Bar'
或从给定指令的控制器中更改
$scope.name='Bar'
时,ParentCtrl的模板将反映新的
$scope.name
,否则,它只是从父范围到指令范围的单向绑定。不幸的是,这不是我得到的。我是不是遗漏了什么?下面是一个plunker链接,说明了这个问题:

守则:

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>

姓名:{{Name},职业:{{occulation}

问题是您有多个
ParentCtrl
实例,第一个实例在body上,然后在其中一个内部div上

因此,当您在范围变量上声明
name
时,您是在将其声明为基元类型,因此内部控制器内的重写值将对
$scope.name
值有新的引用。原型继承仅在
对象
不在基元类型变量上时才发生

在第页定义
ng模型时,应遵循
dot规则


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

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

因此,当您在范围变量上声明
name
时,您是在将其声明为基元类型,因此内部控制器内的重写值将对
$scope.name
值有新的引用。原型继承仅在
对象
不在基元类型变量上时才发生

在第页定义
ng模型时,应遵循
dot规则


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

您在指令中创建了一个独立的作用域,为什么希望更改向上传播?因为双向绑定非常有用。我真正想问的是;指令可以进行双向绑定吗?哦,我想我理解你的错误-看看这个答案:这一个:你在指令中创建了一个独立的作用域,为什么你希望更改向上传播?因为双向绑定非常有用。我真正想问的是;指令可以双向绑定吗?哦,我想我理解你的错误-看看这个答案:还有这个: