1

私が開発している小さな 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()) からトリガーされ、新しいアイテムをカテゴリに挿入する 2 番目のスコープができました。この新しいアイテムを既存の $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 内で何かを push() しようとすると、次のエラーが発生します。

TypeError: オブジェクト # にはメソッド 'push' がありません

このエラーが発生する理由を知っている人はいますか? 私は正しくないことをしていますか?

ajax 呼び出しが完了し、成功のコールバックがトリガーされますが、push() で問題が発生します。

私はAngularjsを学んでいるので、しばらくお待ちください:)

4

2 に答える 2

3
$scope.categories = simpleFactory.getCategories()

promise オブジェクトを返しますが、配列ではありません。そして promise オブジェクトにはメソッドがありませんpush()getCategories()配列を返すようにメソッドを変更します。

于 2013-10-07T17:06:10.457 に答える