无法从Angular push中读取未定义的属性“推送”

时间:2015-02-06 10:26:55

标签: json angularjs

我试图将属性推送到json文件而我收到错误...

TypeError:无法读取属性' push'未定义的

这是我的控制器......

'use strict';
(function () {

var userQuoteBuild = angular.module('priceQuoteApp');

userQuoteBuild.controller('quoteBuilderController', function ($scope, $http, $timeout, productsServices, userQuoteBuild) {

    $scope.getProductDetails = function (item) {

        userQuoteBuild.setProductName(item.product_name)

        userQuoteBuild.SelectedProductattributes1.push({
                bearerBandwidth: '100',
                description: 'item2'
            });

    };      

});

userQuoteBuild.controller('productDisplayer', function ($scope, userQuoteBuild) {
    $scope.userQuoteBuild = userQuoteBuild;
    $scope.$watch(function () { return userQuoteBuild.getProductName(); }, function (newValue) {
        if (newValue) $scope.selected_product_name = newValue;
    });
});

}());

这就是我保留json的地方......

var userQuoteBuild = angular.module('priceQuoteApp');

userQuoteBuild.factory('userQuoteBuild', function () {

var SelectedProductattributes1 = [{
    bearerBandwidth: '',
    description: ''
}];
});

谁能看到我做错了什么?感谢

1 个答案:

答案 0 :(得分:1)

编辑:我刚注意到您的app变量与工厂变量相同。你也应该解决这个问题。

例如var app = angular.module('priceQuoteApp');然后app.factory( ....

您的工厂需要返回变量才能访问内容

app.factory('userQuoteBuild', function () {
    return [{
        bearerBandwidth: '',
        description: ''
    }];
});

然后简单追加

userQuoteBuild.push({ ... });

或者,如果你想在工厂给自己一些空间

app.factory('userQuoteBuild', function () {
    return { 
        SelectedProductattributes1: [{
            bearerBandwidth: '',
            description: ''
        }]
    };
});

然后

userQuoteBuild.SelectedProductattributes1.push({ ... });