我可以在指令中注意更改属性吗?
我有这样的事情:
<online-wathers></online-watchers>
它显示在线连接的用户到视频广播并需要广播ID。显然没有这个属性它将无法工作。 此视频广播不是在文档就绪时启动,而是在发布者实际想要启动时播放。当他开始时 - 后端给了我广播ID。
现在我只是在api返回broadcast-id时将它附加到带有broadcast-id =“xx”的DOM。
$(".online-watchers-container")
.html($("<online-watchers broadcast-id='"+broadcast.id+"' />"));
$(".chat-container")
.html($("<chat broadcast-id='"+broadcast.id+"' />"));
$(".request-container")
.html($("<live-requests broadcast-id='"+broadcast.id+"'></live-requests>"));
// compile directives
angular.bootstrap(angular.element("online-watchers, chat, live-requests"), ['MyApp']);
但是有没有内部方法来观看添加或更改属性?因此,在页面加载时,我将在DOM中使用&lt; online-watchers&gt;&lt; / online-watchers&gt; ,当我通过broadcastId获得响应时,我只需在DOM中添加属性并且指令对其作出反应。
如果您将其视为狗屎代码,我将非常感谢您展示一些更好的解决方案。
感谢。
答案 0 :(得分:1)
是的,你可以
function MyDirective() {
return {
link: function (scope, iElement, iAttrs) {
scope.$watch(iAttrs.scopeProp, function (val) {
console.log("prop: " + val);
});
iAttrs.$observe("interpolated", function (val) {
console.log("interpolate: " + val);
});
}
}
}
<my-directive scope-prop="someId" interpolated="{{someId + 1}}"
function MyCtrl($scope) {
$scope.someId = 12;
}
有关更多示例,请查看:How to get evaluated attributes inside a custom directive