繁体   English   中英

了解$ resource和控制器

[英]Understanding $resource and controllers

我试图理解以下代码。 如果我理解正确,下面有三个与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什么区别?

是。 仅当加载控制器时,该代码才不会循环运行。

$ resource提供了使用getquery的选项,不同之处在于query将立即返回空数组或对象,具体取决于isArray是否设置为true。 这有助于进行渲染,以便在angular需要数组或对象但不会像对异步操作那样进行不确定时,不会引发任何错误。 当响应与您的数据一起返回时,摘要循环将运行,因为$scope已更改,并且随后它将重新呈现您的视图。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM