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';
}
}