了解$ resource和controllers

时间:2015-10-08 21:04:48

标签: javascript angularjs

我正在尝试理解以下代码段。如果我理解正确,下面我有三个与REST服务器数据源交互的资源对象(这些对象分别是CategorySrvArticleSrvSearchSrv

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;
});

我能理解这一点吗?另外,getquery之间有什么区别?

1 个答案:

答案 0 :(得分:0)

是。只有在加载控制器时,代码才会在循环中运行。

$ resource为您提供了使用getquery的选项,区别在于query将立即返回空数组或对象,具体取决于isArray是否为$scope设为true。这有助于渲染,以便在角度需要数组或对象时不会抛出任何错误,而是像异步操作一样得到未定义。当回复数据时,摘要周期将在object发生变化后运行,随后会重新呈现您的视图。

docs:https://docs.angularjs.org/api/ngResource/service/ $ resource