Angularjs - 使用嵌套数组的单个对象声明工厂 - 未定义ReferenceError:....

时间:2013-07-09 14:29:13

标签: angularjs angularjs-service

我有一个工厂有几种不同的方法,我试图声明一个嵌套在其中的数组的对象。那个嵌套数组将是我的应用程序的主要驱动力,它也将有嵌套数组(更多)。但是,我确实希望嵌套数组保持嵌套在那个对象中。我尝试了以下操作,但我一直收到 myObject 未定义的错误。

app.factory('myService', function() {
    return {
        myobject: {name: "MockName", version: "1", myArray: []},
        addToArray: function(){
            this.myobject.myArray.push({name: "Something + " (typeof(myObject.myArray) === 'undefined' ? 1 : myObject.myArray.length, anotherArrayInside: []})
        },
        .......
    };
});

我仍然是Angular的新手所以我不知道如何解决这个问题。有什么建议吗?

解决

所以我发现我没有放一段代码,而那段代码导致了我的问题:

它是myObject.myArray,因为myObject.myArray尚未定义,它给了我一个错误。我已经将其更改为 typeof(myObject)==='undefined'

2 个答案:

答案 0 :(得分:3)

这是一个Javascript问题。

app.factory('myService', function() {
    var myobject = {name: "MockName", version: "1", myArray: []}
    return {
        addToArray: function(){
            myobject.myArray.push({name: "Something" , anotherArrayInside: []})
        },
        .......
    };
});

答案 1 :(得分:2)

您可能需要阅读此Angular Service Definition: service or factory

这不是AngularJS的问题,而是你在JavaScript中做错了。

var yourobj = {...}
return { addToArray : function() { /* now yourobj is visible */ }

无论如何,我用你的代码做了jsfiddle。你的“这个”使它可见,但更好的方法是揭示模式http://addyosmani.com/resources/essentialjsdesignpatterns/book/