[英]scope.$watch not firing on variable change
我下面有以下代碼片段。 我遇到的問題是,每當modal.isOpen的值設置為true時,$ watch語句就不會觸發。 我試圖避免使用scope。$ apply。 我在這里做錯了什么...
Angular指令中的Inside Link函數:
link: function (scope, elem, attrs) {
scope.$watch('modal.isOpen', function(newValue, oldValue) {
if (newValue)
console.log("This does not trigger...");
}, true);
$document.bind('keydown', function (e) {
if(e.keyCode >= 48 && e.keyCode <= 90) {
scope.modal.isOpen = true;
elem.find('input')[0].focus();
}
..........
});
您應該監視在$watch
函數提供的字符串中不應包含scope
屬性。
scope.$watch('modal.isOpen', function(newValue, oldValue) {
從自定義事件修改scope
,不會更新綁定。 您需要使用$timeout
/ $apply()
來啟動摘要循環以更新綁定(如果有任何代碼運行了角度上下文,那么angular不會運行摘要循環來更新綁定)。
$document.bind('keydown', function(e) {
if (e.keyCode >= 48 && e.keyCode <= 90) {
$timeout(function() {
scope.modal.isOpen = true;
elem.find('input')[0].focus();
});
}
..........
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.