私のチームは現在、Ractive を使用して一連のアラートを表示しています。各アラート:
- Ractive でビューをレンダリングします
widgets.js
何らかの DOM 操作を行う Twitter を開始します (ツイートを埋め込むため)。- 後でそのビューのデータを変更する (ユーザーが別のアラートを選択した場合)
Twitter の DOM の変更は Ractive の仮想 DOM に干渉するため、現在、Twitter の終了ractive.reset()
後に DOM をリセットするために使用しています。これは、Twitter が Ractive の背後で DOM を操作したために発生するような、大量の DOM の問題を防ぐためのものです。widgets.js
reset()
cannot appendChild of null
ただし、ractive.reset()
式を実行すると、機能しなくなったようです。
これは、DOM を操作する可能性のある他のライブラリを処理する正しい方法ですか? の後に式を引き続き機能させるにはどうすればよいreset()
ですか?
簡単なデモを次に示します。式は の前では機能しますreset()
が、その後では機能しないことに注意してください。
<body>
<h1>test</h1>
<div class="bound"></div>
<script src='http://cdn.ractivejs.org/latest/ractive.js'></script>
<script>
var binding = new Ractive({
el: document.querySelector('.bound'),
data: {
name: 'mike',
swaggify: function(string) {return 'SWAG'+string}
},
template: '<p>Hello, {{ swaggify(name) }}!</p>'
})
binding.reset().then(function(){
binding.data.name = 'steve'
})
</script>
</body>
そして必須の JSFiddle