0
AngularJS有可能避免再次渲染視圖嗎?AngularJS - 我怎樣才能停止再次渲染模板?
我有一個頁面,它從數據庫查詢數據並將其顯示到視圖中,但是當我導航到另一個頁面時,然後再次導航回來。它再次呈現視圖。
在AngularJS中它可能會保留渲染視圖嗎?我不想再查詢數據並重新渲染視圖。我想立即顯示渲染視圖而不再查詢數據。
AngularJS有可能避免再次渲染視圖嗎?AngularJS - 我怎樣才能停止再次渲染模板?
我有一個頁面,它從數據庫查詢數據並將其顯示到視圖中,但是當我導航到另一個頁面時,然後再次導航回來。它再次呈現視圖。
在AngularJS中它可能會保留渲染視圖嗎?我不想再查詢數據並重新渲染視圖。我想立即顯示渲染視圖而不再查詢數據。
如果您將數據保存或緩存在服務中,則可以避免每次查詢服務器。承諾是做這件事的好方法。請看下面的例子,它使用由$http
返回的承諾(但你可以很容易地$q
創建自己的承諾):
app.controller('SomeController', function($scope, dataService) {
dataService().success(function(data) {
$scope.myData = data;
});
});
app.factory('dataService', function($http) {
var promise = null;
return function() {
if (promise) {
return promise;
} else {
promise = $http.get("...");
return promise;
}
};
});
由於promise
設置你第一次打電話dataService()
,以及現有promise
返回如果它已經存在,只有第一次打電話給dataService()
實際上會進行HTTP通話;其餘的將使用現有值。
感謝您的快速回復布蘭登。 :)這是一個很好的解決方案,但它再次呈現視圖或HTML?假設,我們有200個項目,我們將使用ng-repeat顯示它。當我們再次訪問該頁面時,它會再次運行ng-repeat嗎?或者,angular會給我們以前的html視圖,而不會再次運行ng-repeat。 –
是的,它會重新渲染視圖。如果您的視圖基於'ngRoute',我不確定是否有任何方法來防止這種情況。如果你正在管理你自己的視圖,你可能會使用'ngShow' /'ngHide',但請記住,當你的視圖被加載時,你的示波器觀察者將會被觸發。 –
是啊!我同意......我認爲這就是爲什麼angular會因爲這些觀察者而無法馬上顯示html視圖的原因。再次感謝布蘭登。 –