我正在学习如何使用 ractive并不能解决问题,代码在下面jsfiddle .
我正在做的事情的要点是队列的计数器(数组中的最后一个对象是当前人): 1.一个计数器,显示当前人的排队号 2. 显示队列大小的计数器
A) 工作正常,但逻辑过于臃肿,因此我尝试将其转换为单独的变量,如 B) 所示,但它根本不更新。
我在代码中放置了一个观察器来观察队列变量何时发生变化。我希望每次单击“跳过当前人员”或“删除当前人员”时它都会显示警报,但警报仅在我第一次加载页面时显示。
ractive.observe({
'queue.0.queueNo': alert('here')
});
最佳答案
Wim 的回答很好 - {{num(queue)}}
是一个优雅的解决方案。
你不能使用 queueNum
的原因是当你使用
queueNum = people[(people.length-1)].queueNo
queueNum
的值设置为无论 people[(people.length-1)].queueNo
的值是在发表声明时。更改队列时,queueNum
不会重新计算。这与其说是 Ractive 的东西,不如说是 JavaScript 的东西。
另一种说法是
a = 1;
b = 2;
foo = a + b; // foo === 3
a = 3;
b = 4;
alert( foo ); // alerts '3' - foo is the same, even though a and b changed
这实际上与 alert('here')
仅在页面加载时触发的原因相同 - 而不是通过将其包装在函数中告诉 Ractive 在值更改时触发警报,如 Wim 的回答的第二个代码块,代码被立即执行。
关于javascript - Ractive 和数组,数据未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18890167/