gpt4 book ai didi

javascript - 观察者未检测到数组推送

转载 作者:行者123 更新时间:2023-11-28 08:14:33 26 4
gpt4 key购买 nike

随着我越来越多地发现这个库,我被困在这一件事上。

我有这个staticData数组:

staticData = {
buildingsQueue : [
{ current: false, building : 14, queueID : 1, elapsed : 27, finish : 46 },
{ current: false, building : 4, queueID : 2, elapsed : 0, finish : 25 }
]
}

这个 Ractive 实例:

var townController = {
init : function () {
townTPL = new Ractive({
el : 'pageContainer',
append : true,
template : templates.town,
data : {
staticUrl : staticData.url,
queue : staticData.village.buildingsQueue
}
});

townTPL.observe('queue.*',function(newValue,oldValue,keypath){
console.log('changed::'+keypath);
});

}

我的buildingsQueue将一次处理一个,并且townController会将current键设置为true,因此我决定为queue.*创建一个观察者<强>Rich's example

var ractive = new Ractive({
el: myContainer,
template: myTemplate,
data: {
people: [
{name: 'Rich Harris'},
{name: 'Marty Nelson'}
]
}
});

ractive.observe('people.*', function(newValue, oldValue, keypath) {

});

var people = ractive.get('people');
people.push({name: 'Jason Brown'});
//newValue will equal 3, and the keypath will be people.length

问题是 buildingQueue 随着时间的推移而变化,并且像下面这样推送数据不会触发观察者回调:

var list = TownTPL.get('queue');
list.push({ current: true, building : 1, queueID : 4, elapsed : 0, finish : 36 })
// OR
staticData.buildingsQueue.push({ current: true, building : 1, queueID : 4, elapsed : 0, finish : 36 });

观察者不会像 Rich 的文档中所说的那样触发。我的逻辑是,观察者仅使用启动时数组中的数组项,但我很确定这不是真的,它应该适用于动态数组,因此,请启发我。

要注意我从 init 函数外部(例如 Javascript 控制台或另一个 javascript 对象)触发推送事件。

已解决的问题我已经将插件更新到了边缘版本,仍然是 0.4.0,就像我正在使用的版本一样,但是,这个版本是两天前发布的。感谢 Rich 和 Marty,无论你们在这些提交中做了什么。

最佳答案

通过更新到边缘版本修复。

关于javascript - 观察者未检测到数组推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com