2013-01-18 32 views
0

編輯:在AngularJS中,是否可以強制視圖從其控制器外部進行更新?

標題中所述的問題在下面正確答案,所以我認爲,爲了人們看到如何做到這一點,我應該留下問題以下面的答案。

事實證明,我正在使用的框架還沒有完全將Angular的變量轉換爲camelcase慣例。它在大多數地方都被抽象出來,只是不在這裏,現在一切正常,所以我根本不需要強制重繪。如果有人這樣做,請參閱下面的答案。 :)

+1

如果您雙向綁定,你有什麼重繪?我們可以在Plunker上得到一個更完整的例子嗎?另外,*從不*在你的控制器中引用DOM - 這是不好的juju。 –

+0

@JoshDavidMiller不,我不能在任何地方重現整個框架,不幸的是。我所說的是「=」應該是綁定數據,但事實並非如此。我可以根據需要更改我傳入的變量,視圖不會重繪本身。 –

+0

我當然不想要「整個框架」,只是一個簡單的例子,因爲我時間有限。我不知道你的意思是「不重繪自己」。如果你的意思是這個值沒有被更新,那麼你的代碼有些問題。但是我們不能告訴你什麼沒有看到一些代碼。 –

回答

7

在您的指令中執行事件綁定,而不是在您的控制器內部。必須調用從你的指令內$apply()如果你更改了一些模型,並希望這些更改指令外反映:

myApp.directive('someDir', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      model: '=', 
     }, 
     link: function (scope, elt, dirs) { 
      elt.bind('click', function() { 
       scope.$apply(function() { 
        // make changes to scope.model 
       }); 
      }); 
     } 
    } 
}); 
+0

好的,所以這是一個不好的問題,我會接受你的答案,主要是因爲它回答了我問的問題。事實證明,我遇到的問題是我用我正在使用的框架部分地從Angular中抽象出來,並且我不知道在這種情況下可變插值機制不是從我這裏抽象出來的。我所要做的就是使用這個約定,並且在我的指令中,我在camelCase中正確地獲取了數據。 –

相關問題