如何通过 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 来减少麻烦。
在我的测试套件中,我想确认在文本输入字段中输入字符的效果。它应该导致计算值的变化。
事实上,当我在文本字段中键入字符时,它可以正常工作并重新计算。
如果我使用
设置文本字段$('#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 来减少麻烦。