使用$ resource更新$ scope

时间:2013-11-28 12:33:10

标签: angularjs

为什么只有那个不使用$ resource.get()的人工作?我正在使用kendo-angular进行更新。这与异步有关吗?主变量看起来完全一样,所以这必须与$ resourse有关。我错过了什么?

这有效:

app.controller('SubjectCntrl', ['$scope', 'categoryService', function($scope, categoryService) {

    var main = categoryService.getCategories();
    var subjects = {
        data : [main]
    };
    $scope.subjects = {
        dataSource: subjects
    };
}]);

这不是:

app.controller('SubjectCntrl', ['$scope', 'categoryService', 'ApiFactory', function($scope, categoryService, ApiFactory) {
    ApiFactory.get(function(categoriesData) {
       var main = categoryService.getCategories();

       var subjects = {
           data : [main]
        };
        $scope.subjects = {
            dataSource: subjects
        };
    });
}]);

工厂:

app.factory('ApiFactory', ['$resource', function($resource) {
    return $resource('http://localhost:8080/rest/forum/categories/1');
}]);

服务:

app.service('categoryService', ['$resource',  function($resource){


    this.getCategories = function(){
        var farmingSubjects = [ {text: "Poteter", spriteCssClass: "subject"}, {text: "Agurk", spriteCssClass: "subject"} ];
        var forestSubjects = [ {text: "Tall", spriteCssClass: "subject"}, {text: "Gran", spriteCssClass: "subject"} ];
        var animalSubjects = [ {text: "Hundar", spriteCssClass: "subject"}, {text: "Katter", spriteCssClass: "subject"} ];

        var farming = { text: "Jordbruk", items: farmingSubjects };
        var forest = { text: "Skogshold", items: forestSubjects };
        var animals = { text: "Dyrebruk", items: animalSubjects };

        var subjects = [farming, forest, animals ];

        var main = { text: "Huvudemner", expanded: true, items: subjects};
        return main;
    };
}]);

编辑:毫无疑问地调用成功函数。

   ApiFactory.get(function(data){
        console.log('success, got data: ', data);       
    }, function(err){
        alert('request failed');
    });

1 个答案:

答案 0 :(得分:0)

我认为第二种情况不起作用,因为ApiFactory调用失败了。您声明的回调是为了成功。