Javascript AngularJS push()错误

Javascript AngularJS push()错误,javascript,angularjs,Javascript,Angularjs,我正在开发的一个小AngularJS应用程序有问题。我主要是一名jQuery开发人员,所以请对我放松;) 我有一个工厂正在通过$http调用获取我的类别: app.factory('simpleFactory', function($http, $routeParams) { var categories = []; var factory = {}; factory.getCategories = function() { return $http({ url: '/

我正在开发的一个小AngularJS应用程序有问题。我主要是一名jQuery开发人员,所以请对我放松;)

我有一个工厂正在通过$http调用获取我的类别:

app.factory('simpleFactory', function($http, $routeParams) {
var categories = [];
var factory = {};

factory.getCategories = function() {
    return $http({
        url: '/system/getlist/',
        data: { id : pageID },
        method: "POST",
    })
    .success(function(addData) {
        categories = addData;
    });
}

return factory; });
我的控制器创建从我的工厂获取数据的作用域:

app.controller('loadCategories', function ($scope, simpleFactory) {
$scope.categories = [];
init();

function init() {
    $scope.categories = simpleFactory.getCategories();
}
}))

现在我有了第二个作用域,它是从我的视图(createCategory())触发的,用于在我的Category中插入一个新项。现在我想把这个新项目推到我现有的$scope.categories中。我试着这样做:

$scope.createCategory = function(cat,catName,catLvl,catType) {
    var catName = catName;
    var parentID = cat.id;

    $http({
        url: '/system/createcategory/',
        data: { catName : catName, parentID : parentID, pageID: pageID, catLvl: catLvl, catType: catType },
        method: "POST",
    })
    .success(function(addData) {
        $scope.categories.push(addData); 

    }); 
}
最后一个控制器也位于loadCategories控制器中

问题:

当我尝试在$scope.categories内推送()某个内容时,会出现以下错误:

TypeError:对象#没有方法“推送”

有人知道我为什么会犯这个错误吗?我在做不正确的事情吗

ajax调用完成并触发成功回调,但是push()出现了一些问题

我只是在学习Angularjs,所以请耐心点:)

返回,但不是数组。和promise对象没有方法
push()
。 更改
getCategories()
方法以返回数组

返回,但不是数组。和promise对象没有方法
push()

更改
getCategories()
方法以返回数组。

Ph0en1x是正确的,您需要让承诺执行,然后分配范围变量,如:

simpleFactory.getCategories().then(function(data) {
  $scope.categories = data;
});

我将更改simpleFactory以将类别返回到,并允许赋值。

Ph0en1x是正确的,您需要让承诺执行,然后分配范围变量,如:

simpleFactory.getCategories().then(function(data) {
  $scope.categories = data;
});

我将更改simpleFactory以将类别返回到,同时允许赋值。

是!非常感谢你。我确实在使用promise对象,它不是数组。。。因此无法推送数据。是的!非常感谢你。我确实在使用promise对象,它不是数组。。。因此,推送数据是不可能的。