我正在尝试理解以下代码段。如果我理解正确,下面我有三个与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
之间有什么区别?
答案 0 :(得分:0)
是。只有在加载控制器时,代码才会在循环中运行。
$ resource为您提供了使用get
或query
的选项,区别在于query
将立即返回空数组或对象,具体取决于isArray
是否为$scope
设为true。这有助于渲染,以便在角度需要数组或对象时不会抛出任何错误,而是像异步操作一样得到未定义。当回复数据时,摘要周期将在object
发生变化后运行,随后会重新呈现您的视图。
docs:https://docs.angularjs.org/api/ngResource/service/ $ resource