从数组引用元素时更改元素的文本

时间:2017-02-19 06:45:03

标签: angularjs cordova

我尝试根据从服务器传回的数值来更改页面中的文本元素。我设法存储每个引用以及来自服务器的值,但是当试图访问对象的文本值时,我会遇到错误statusText[key].text is not a function。从列表引用时是否可以访问对象属性? Javascript和Angular不是我的强项。

以下是代码:

var log = [];
var statusText = [];

$http.post("url", {userid: currentUserID})
.then(function(response)
{
    angular.forEach(response.data.status, function(value, key){
        this.push(value.complete);
    }, log);

    angular.forEach(document.getElementsByClassName("step-status"), function(value, key)
    {
        this.push(value)
    }, statusText);

    angular.forEach(statusText, function(value, key)
    {
        if (log[key] == 2)
        {
            statusText[key].text('Completed');
        }
        else if (log[key] == 1)
        {
            statusText[key].text('In progress');
        }
        else
        {
            statusText[key].text('Not started');
        }
    });
});

3 个答案:

答案 0 :(得分:0)

这是因为您在forEach上应用response.data.status,您将检查此值,然后它将是一些数值,如200.

尝试像这样改变

statusText = response.data;
angular.forEach(response.data, function(value, key){
        this.push(value.complete);
    }, log);

答案 1 :(得分:0)

试试这个

var log = [];
var statusText = [];

$http.post("url", {userid: currentUserID})
.then(function(response)
{
    angular.forEach(response.data.status, function(value, key){
        this.push(value.complete);
    }, log);

    angular.forEach(document.getElementsByClassName("step-status"), function(value, key)
    {
        this.push(value)
    }, statusText);

    angular.forEach(statusText, function(value, key)
    {
        if (log[key] === 2)
        {
            statusText[key] = 'Completed';
        }
        else if (log[key] === 1)
        {
            statusText[key] = 'In progress';
        }
        else
        {
            statusText[key] = 'Not started';
        }
    });
});

答案 2 :(得分:0)

Sollution:改变了我显示返回字符串的方法。只需将数组的每个元素设置为我想要的字符串,并使用绑定来显示数据。

感谢所有人的帮助。