如何从父作用域读取作用域属性

时间:2013-09-24 15:17:26

标签: javascript angularjs angular-ui

我正在创建一个简单的指令但是我一开始就陷入困境。我的问题是我无法从post函数中的范围读取属性。 Here是我的代码:

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

        }
    }
});

1 个答案:

答案 0 :(得分:1)

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

这里有一个工作人员: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);
        }
      }


});

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

value : "@value"而非value = "@value" !!!

哦,最后一件事:如果你的指令是mod ...你的div 你的属性是 mod {{ 1}}。