AngularJS Factory HTTP变量仅可在视图中使用

时间:2015-03-22 20:16:08

标签: angularjs

所以,我的AngularJS工厂看起来像:

.factory('getCategories', function($http) {
    return $http.get('api/categories');
})

然后,在控制器中,我得到的值如下:

getCategories.
    success(function(data) {
        $scope.category_data = data;
    });

在视图中,我可以通过{{category_data}}访问范围变量,它工作正常,返回JSON。但是,当我尝试访问控制器中的变量时,它总是为空。我试过这样做:

$scope.category = $scope.category_data;

然后,在我有了这个之后,我会尝试通过{{category}}访问视图中的$ scope.category变量,它将是空白的。

关于替代我所做的事情的任何提示?或者我做错了什么?

编辑:以下是我整个控制器的样子。

.controller('ForumController', function($scope, $route, $routeParams, $location, $filter, getCategories) {  

getCategories.
    success(function(data) {
        $scope.category_data = data;
    });

$scope.category = $scope.category_data;

})

1 个答案:

答案 0 :(得分:1)

由于success回调是异步的,因此会在分配到$scope.category之后执行,因此您实际上将undefined的值分配给$scope.category

你需要做这样的事情:

    .controller('ForumController', function($scope, $route, $routeParams, $location, $filter, getCategories) {  

    getCategories.
        success(function(data) {
            $scope.category = data;
        });
    })