JavaScript / Angular:如何从同一对象的数组初始化属性?

时间:2014-08-02 21:59:01

标签: javascript angularjs

这是我想在Angular工厂做的事情:

app.factory('dataService', function () {
    return {
        data: ['5', '10', '20', '50', '100', '200'],
        selectedData: data[0],
        },
    },
)

基本上,我想将selectedData初始化为预定义数据数组的其中一项。此代码返回data is not defined。如果我使用this.data [0],我会收到错误:Cannot read property '0' of undefined。那么,我如何在这里引用数据?

2 个答案:

答案 0 :(得分:1)

尝试在本地存储对象,然后设置值,最后返回:

app.factory('dataService', function () {
    var obj = { data: ['5', '10', '20', '50', '100', '200'] };
    obj.selectedData = obj.data[0];
    return obj;
    }
)

在定义对象时,无法引用data

答案 1 :(得分:0)

那不是this works

如果你确定你想要一个具有最终价值的物体,那么Troels Larsen的答案就是你要走的路。但是,在许多应用程序中,拥有可以随时为您获取更新数据的对象是明智之举。在不知道你的应用程序的情况下很难显示和告诉,但这样做会看起来像这样......

app.factory('dataService', function () {
    var result = {
        data: ['5', '10', '20', '50', '100', '200'],
        getSelectedData: function (index) {
            return this.data[index];
        }
    }

    return result;
})

然后在其他任何地方,您都可以访问您想要的内容 - 这在数据阵列可能不稳定的情况下尤其有用。