2013-01-03 45 views
17

我有以下作用角JS的觀點不正確更新

在我看來NG單擊- >其依次調用一個jQuery的AJAX功能,顯示的jQuery Qtip - >在Qtip彈出我有一個吳單擊在一個元素 - >它執行$ http後並有一些回調更新$範圍值

所以所有這些事情都正常發生。但根據最後階段回調中所做的更改,更新沒有反映在視圖中。

我在我看來有一個「ng-mousemove」的功能。所以每當我移動鼠標時,視圖中的更新都會反映出來。

我在這裏做錯了什麼?是因爲在角度和非角度之間轉換?任何人都可以幫我解決這個問題嗎?

回答

36

由於docs解釋說:

$適用()用於從 角框架之外的角度來執行的表達式。 (例如,來自瀏覽器DOM事件, setTimeout,XHR或第三方庫)。因爲我們正在調用 角度框架,我們需要執行適當的作用域生命週期 異常處理,執行手錶。

所以,如果你有一個jQuery代碼

$('#myDiv').on('click', function() { 
    // do stuff 
    $scope.$apply(); 
}); 
+0

在我的代碼,我只NG-點擊調用角度的功能。我在那個角函數裏面做了** jQuery.qtip()**。該jQuery.qtip也內部** ** jQuery post來獲取Qtip的內容。但是當我在調用qtip()函數後嘗試應用時,摘要已經在運行。 ** $ apply **的正確位置是什麼? qtip渲染後不應該調用它嗎? –

+0

你最好給你的問題添加一段代碼。 – asgoth

+1

另外,調用'$ scope。$ apply'最安全的方法是:if($($ $ scope)$ scope)$ apply();' –