无法访问指令的id

时间:2013-11-26 11:29:57

标签: angularjs angularjs-directive

我有一个'visibility'指令定义如下:

<span id="visibilityFor{{post.metaData.assetId}}" visibility></span>

和JS中相应的指令代码是

myAppModule.directive("visibility", function ($compile, $http) {
return {
    scope: {
        id:"="
    },
    link: function ($scope, element, attrs) {
        element.bind('mouseover', function () {
            alert("hi");

        });
    }
    }
});

我正在尝试访问模型中span的'id'。但我认为这是未定义的。这背后的原因是什么?

1 个答案:

答案 0 :(得分:1)

使用=,您希望获得对父作用域中定义的对象的引用,但您的id可能只是一个字符串。如果您希望将值视为字符串,请使用@而不是=。像这里:

scope: {
    id:"@"
},
link: function ($scope, element, attrs) {
    element.bind('mouseover', function () {
        alert("hi");

    });
}

您还可以从id参数中检索attrs的值:attrs.id - 在这种情况下,它始终会被视为字符串,这可能是更好的方法。