我不确定我应该用什么关键字来解决我的问题。但是我一直在墙上敲了三个小时试图看看这里有什么问题。它只是一个简单的推送对象到数组。问题是,当我尝试console.log
数组值时,有两个object
键'价值改变了。我在AngularJS控制器中写这个。
以下是我提供服务的示例对象:
onbd.data.add = {
predefined: [{
activity : 'morning jog',
purpose : 'grow',
days : '0 1 2 3 4 5 6',
start : '05:30',
stop : '06:00',
meta : 'repeats everyday on 5:30 AM for half an hour'
}]
};
在控制器中,这是在ng-click
事件上调用的函数,它会将所述数据从服务推送到AJAX数据数组中:
th.setActivity = function (data) {
// the data is one of the object inside the predefined
// key from the service above
var newAct = {
activity : data.activity,
purpose : data.purpose,
day : data.days,
start : data.start,
stop : data.stop
};
th.list.push(newAct);
};
以下是我从console.log('newAct', newAct)
获得的内容:
newAct Object {
activity: "morning jog",
purpose: "grow",
day: "0 1 2 3 4 5 6",
start: "05:30",
stop: "06:00"
}
哪个是正确的,但这是我在console.log('list', th.list);
时得到的:
list [Object]
0: Object
$$hashKey: "object:136"
activity: "morning jog"
day: "0 1 2 3 4 5 6"
purpose: "grow"
start: "05:30"
stop: "06:00"
length: 1
__proto__: Array[0]
请注意,密钥day
和purpose
已更改。仅当我执行th.setActivity
函数时才会发生这种情况。有什么想法为什么会出现这种奇怪的行为?
非常感谢。
答案 0 :(得分:0)
我想通了,感谢@tymeJV指出控制台试图让对象引用保持最新的事实。我决定逐一console.log()
找到问题所在。 @tymeJV是正确的,不同的值是修改对象的其他一些函数的结果。
我的错误是,修改函数希望接收object
作为值而不是string
,就像我在服务中所说的那样。我已更新它,现在它可以工作。
愚蠢的我,我知道:)。