0
我在重新評估作爲自定義角度(1.2.28)指令的屬性傳遞的表達式時遇到了麻煩。
我試過所有可能的組合$eval
,$parse
以及孤立和非孤立的範圍。我無法圍繞這一點思考。重新評估指令屬性表達式
我有這樣的事情:
<div ng-repeat="item in dataset">
<my-directive
show-tooltip="user.level=='visitor' && item.memberOnly"
content-tooltip="isAdded(item) && 'Remove Me' || 'Add Me'">
<my-directive>
</div>
的問題是,user.level
可以因爲改變,例如,用戶登錄和(封閉)的範圍可以返回不同的值取決於是否已添加功能isAdded
項目到一個列表或不。
的指令:
angular.module("MyModule", [])
.directive("myDirective",() {
return {
restrict: 'E',
priority: 999,
link: function(scope, elm, attrs) {
showTooltip = scope.$eval(attrs.showTooltip);
contentTooltip = scope.$eval(attrs.contentTooltip);
// This works
scope.$watch(attrs.contentTooltip, function(value) {
if(value and value != contentTooltip)
contentTooltip = value
});
// This never works
scope.$watch(attrs.showTooltip, function(value) {
if(value and value != showTooltip)
showTooltip = value
});
// Do things..
}
}
});
我不知道爲什麼,但第一隻手錶將工作,第二不會有任何效果。我用$ parse使用了類似的方法,但無法使其工作。 也許我這樣做是完全錯誤的
傳遞給屬性的值不是插值的,所以我不能使用$ observe,不是嗎? – Leonardo
當您創建指令時,您可以將它們添加到您的範圍中。範圍:{showToolTip:'@',contentTooltip:'@'}' –