Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在控制器中使用的角度指令中设置对象的新特性_Javascript_Angularjs_Object_Angularjs Directive - Fatal编程技术网

Javascript 在控制器中使用的角度指令中设置对象的新特性

Javascript 在控制器中使用的角度指令中设置对象的新特性,javascript,angularjs,object,angularjs-directive,Javascript,Angularjs,Object,Angularjs Directive,我有一个指令正在填充div。它接收一个对象,执行一些逻辑来计算变量,将变量插入模板,并将模板返回到div 如何在对象上设置新属性并将其传递回控制器以供使用 例如: HTML: 指令逻辑 .directive('nodeName', [function () { return { restrict: 'A', scope: {node: '='}, template: '<span ng-bind-html="color"></span>',

我有一个指令正在填充
div
。它接收一个对象,执行一些逻辑来计算变量,将变量插入模板,并将模板返回到
div

如何在对象上设置新属性并将其传递回控制器以供使用

例如: HTML:

指令逻辑

.directive('nodeName', [function () {
  return {
    restrict: 'A',
    scope: {node: '='},
    template: '<span ng-bind-html="color"></span>',

    link: function ($scope) {
      if(node.name === 'Apple') {
        $scope.color = 'red';
      }
    }
  };
}])

如果正在发送范围为{node:'='}的对象, 只需使用scope.node并附加属性(它是javascript,可以工作)

不过,链接函数声明是错误的

link: function link(scope, element, attrs) { {
  if(scope.node.name === 'Apple') {
    scope.node.color = 'red';
  }
} 

希望对您有所帮助。

作用域:{node:'='}意味着在
节点
属性中传递的主机作用域(使用指令的作用域)变量与指令自身作用域中的
节点
变量之间存在双向绑定。因此,在
链接
功能中,您可以读取和写入
作用域节点
,更改将反映在主机作用域中

link: function (scope) {
    if(scope.node.name === 'Apple') {
        scope.node.color = 'red';
    }
}

您应该在
节点上设置它,对吗?i、 e
$scope.node.color='red'您也将在控制器中看到它。您不必传递数据,这是双向绑定的好处。
{ name: 'Apple',
  count: 5,
  price: '$5',
  color: 'red'
}
link: function link(scope, element, attrs) { {
  if(scope.node.name === 'Apple') {
    scope.node.color = 'red';
  }
} 
link: function (scope) {
    if(scope.node.name === 'Apple') {
        scope.node.color = 'red';
    }
}