-1

我正在创建一个简单的指令,但是我一开始就卡住了。我的问题是我无法从 post 函数的范围内读取属性。是我的代码:

   <div mod type="{{subnet.isDynamic | type }}"></div>


    networkInterfaces.directive('mod', function () {


    return {

        scope: {
            type: '@'
        },


        link: function (scope, iElement, iAttrs, controller) {


            console.log(scope.type);


            if (scope.type == "Static") {
                iElement.css('background', 'blue');
            }

            if (scope.type == "Dynamic") {
                iElement.css('background', 'green');
            }

        }
    }
});
4

1 回答 1

1

您的范围属性确实是错误的,您在这里不需要它。

一个工作的plnkr:http://plnkr.co/edit/ezbzad?p= preview

请参阅文档以了解指令内的范围属性:http: //docs.angularjs.org/guide/directive

但是,如果您真的想使用,请这样做:

    app.directive("mod", function(){

      return {
        scope: {
          value: "@value"
        },
        link: function(scope, element, attrs){
          console.log(scope.value);
        }
      }


});

{} 的范围属性创建一个新的隔离范围,因此您无法访问您的值。添加 value: "@value" 范围绑定到 value 属性,但请注意语法是 javascript 对象语法:

value : "@value"而不是value = "@value"

哦,最后一件事:如果你的指令是 call mod... 在你的 div你的属性 mod 不是 someDirective

于 2013-09-24T15:30:49.247 回答