2014-06-24 59 views
1

我正在轉換一個MVC應用程序中的頁面與很多內聯jQuery的JavaScript到使用typescript的角度。角度事件不更新頁面

第一個調用工作正常,但我有一個問題:根據下拉列表中的選擇,事件更新視圖中的幾個控件,進行一些ajax調用,最後用來自調用的數據更新視圖。

似乎轉換工作正常,但在調用結束時頁面未更新。

  1. 我試圖刪除所有舊的jQuery代碼,以避免問題。

  2. batarang和java控制檯報告沒有錯誤。

  3. 最終的ajax調用已完成,結果顯示在調試中。

所有似乎工作正常,但頁面未更新。

我該如何找到問題?

謝謝

+1

'所有似乎工作正常,但頁面沒有更新.'似乎是一個'scope。$ apply'問題。使用角的'$ http'而不是'$ .ajax' – basarat

回答

0

很可能你沒有正確處理異步調用。從您的問題中無法分辨出來,但這是您描述的症狀中常見的錯誤。

確保您在.then()方法中更新您的模型,該方法返回的請求爲$http。例如

someFnDoingHttpRequest().then(function(data){ 
     // updated the model with the data 
     }) 

此外(另一個常見錯誤)確保someFnDoingHttpRequest()返回承諾。

+0

是的,這是問題...我用$ q來處理異步請求,現在工作得很好......我只有我想要的問題在更新開始時顯示動畫gif並隱藏結束,但不起作用 –

+0

立即在調用'someFnDoingHttpRequest'然後'showAnimation(false)'之前立即顯示您的動畫(例如'showAnimation(true)')更新模型後。 – david004

0

如果你想「找到問題」,那麼你可以使用下面的選項。

  1. 轉到的Internet Explorer(10或11)

  2. 選擇 「Internet選項」 從設置菜單。

  3. 轉到 「高級」 選項卡(最後一個標籤)

  4. 設置列和選擇顯示每個腳本錯誤通知」

  5. 取消禁用腳本調試(Internet Explorer)」和「禁用腳本調試(其他)

  6. 再次運行程序,您會收到有關顯示實際結果時發生的實際問題的通知。

2

沒有看到任何代碼,這是很難回答,但如果你的事件綁定到一個元素,要更新回調的東西,你將不得不使用$應用

scope.$apply(function() { 
    // your code 
}); 

$申請將觸發$ digest循環,當你想在angular的上下文之外更新某些內容時應該使用它。