如何通过 DOM 操作触发计算 属性 的重新计算

How to trigger recomputation of computed property by DOM manipulation

在我的测试套件中,我想确认在文本输入字段中输入字符的效果。它应该导致计算值的变化。

事实上,当我在文本字段中键入字符时,它可以正常工作并重新计算。

如果我使用

设置文本字段
$('#my_input_field').val("F")

计算值不变。如果我在输入元素上触发 keydown 或 keyup 事件,它也不会改变。如何通过 DOM 操作以编程方式触发 属性 重新计算?

您可以使用ractive.updateModel(keypath)强制双向绑定更新:

<input value='{{value}}'/>
ractive.find('input').value = 'newValue';
ractive.updateModel('value'); // or just `ractive.updateModel()`
console.log( ractive.get( 'value' ) ); // 'newValue'

如果您想通过触发人工 DOM 事件来引起更新,请使用 change 事件,因为这是双向绑定正在侦听的(而不是 keydown和朋友)。它必须是原生 DOM 事件,而不是 jQuery 事件(使用不同的机制)——Ractive 测试套件使用 simulant 来减少麻烦。