javascript - Ractive 和数组,数据未更新

标签 javascript ractivejs

我正在学习如何使用 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/

相关文章:

javascript - phantomjs 不等待 "full"页面加载

javascript - 更改div的innerHTML会清除整个内容

javascript - RactiveJS 具有相同名称属性的多个 radio

javascript - 杀死 "live"Ractive 数据对象

javascript - Ractive.js 中的 onrender 与 init

javascript - Ractive.js 将选中的值复选框放入数组中

javascript - 在滚动时将 div 保持在固定的 x 或 y 位置 - 只是测试

javascript - 上传前在 PHP 中过滤多个选定的文件

javascript - 当用户语言从英语变为希伯来语时如何更改字体系列

javascript - Ractive with Require 例子