如何将对象传递给angular.js指令?插值论证似乎是序列化的

时间:2013-10-11 15:03:42

标签: angularjs angularjs-routing

我正在尝试将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"

如何在那里传递实际对象?

1 个答案:

答案 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>