我的代碼是非常簡單的:AngularJS遵守指令屬性的表達,繼承範圍動態
.controller('Ctrl', ['$scope', '$timeout', function ($scope, $timeout) {
$timeout(function() {
$scope.x = 5;
}, 2000);
}])
.directive('ngHey', ['$parse', function ($parse) {
return {
'restrict': 'A',
'scope': true,
'link': function($scope, el, atr) {
var go = function() {
if ($parse(atr.ngHey)()) {
alert('oiiiiiii');
}
};
atr.$observe('ngHey', function (val) {
if (val) {
go();
}
});
}
};
}]);
//view.html
<div ng-controller="Ctrl">
<span ng-hey="x > 3"></span>
</div>
我希望能夠火的時候,指令表達的變化和當它是真的或假的,但目前的警報從來沒有發生......
它的工作原理只有當我做這樣的事情:
<div ng-controller="Ctrl">
<span ng-hey="{{x > 3}}"></span>
</div>
這是不是我要什麼,我想指令執行的表達式爲NG-IF或NG-隱藏等等
任何提示或幫助表示讚賞,感謝
範圍$的eval(atr.ngHey) – mohamedrias 2015-03-03 11:30:34
@mohamedrias試過了,剛剛更換$範圍$的eval(atr.ngHey)();在$ parse(atr.ngHey);但是當表達式變爲真時,它似乎沒有被觸發 – sbaaaang 2015-03-03 11:41:18
我已經更新了答案。請檢查:) – mohamedrias 2015-03-03 11:49:28