我想了解以下幾段代碼。如果我理解正確,下面我有三個與REST服務器數據源交互的資源對象(這些對象分別爲CategorySrv
,ArticleSrv
和SearchSrv
)。
app.factory('CategoryService', function($resource) {
return $resource('categories');
});
app.factory('ArticleService', function($resource) {
return $resource('articles');
});
app.factory('SearchService', function($resource) {
return $resource('articles/search');
});
現在,我想問的問題,如果何時是控制器的代碼執行?如果我加載頁面,它可能只運行一次。下一次它會什麼時候運行?控制器的代碼不會在循環中運行,而只能在視圖中調用其方法或者加載此控制器的頁面部分(AFAIK)時運行。
發生這種情況時,上面列出的資源對象注入參數列表和控制器的功能被稱爲:
app.controller('AppCtrl', function($scope, $location, CategoryService, ArticleService, CartService) {
CategoryService.query(function(response) {
$scope.categories = response;
});
ArticleService.query(function(response) {
$scope.articles = response;
});
CartService.get(function(response) {
$scope.cartInfo = response;
});
難道我理解這是否正確?另外,get
和query
之間的區別是什麼?
時,該網站加載因此,基本上,所有的查詢,並得到-S執行,旁邊的消化週期將更新視圖(它會停止循環檢測沒有什麼改變後$範圍),就是這樣嗎?之後沒有其他行動? – user107986
不是在這種情況下,沒有。只是要清楚。初始渲染將提供空陣列。這可能會影響您在模板上可能具有的任何重複次數,並顯示未填充表格或列表。一旦響應回來,那麼數組將被填充,並且由於摘要週期檢測到範圍的更改,您的視圖將重新呈現。 – tells
在這種情況下,您可能會看到3個額外的重新渲染,因爲您的響應會在不同的時刻出現。 – tells