我有一个'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'。但我认为这是未定义的。这背后的原因是什么?
答案 0 :(得分:1)
使用=
,您希望获得对父作用域中定义的对象的引用,但您的id
可能只是一个字符串。如果您希望将值视为字符串,请使用@
而不是=
。像这里:
scope: {
id:"@"
},
link: function ($scope, element, attrs) {
element.bind('mouseover', function () {
alert("hi");
});
}
您还可以从id
参数中检索attrs
的值:attrs.id
- 在这种情况下,它始终会被视为字符串,这可能是更好的方法。