簡體   English   中英

scope。$ watch不觸發變量更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM