我正在尝试将JavaScript对象传递给angular指令。我这样调用它:
<thing-badge thing="{{thing}}"></thing>
该指令看起来像这样:
directives.directive('thingBadge', function() {
return {
restrict: 'E',
controller: function($scope) {
},
link: function(scope, element, attrs, $scope) {
attrs.$observe('thing', function(thing) {
console.log(thing);
}
}
}
}
假设该东西是一个JS对象:{'an': "object'}
。我想在我的指令中获取该对象的值。相反,我得到了对象的序列化:'{"an": "object"}'
类型为字符串。
如果我传入number
(例如<thing-badge thing="{{thing.id}}"></thing>
)我也会收到一个字符串,例如"0"
。
如何在那里传递实际对象?
答案 0 :(得分:2)
您需要添加隔离范围:
directives.directive('thingBadge', function() {
return {
restrict: 'E',
scope: {
thing: '='
},
controller: function($scope) {
},
link: function(scope, element, attrs, $scope) {
attrs.$observe('thing', function(thing) {
console.log(thing);
}
}
}
}
并且您不应该在元素中使用大括号表示法:
<thing-badge thing="thing"></thing-badge>