我試圖分離每個部分的數據,以便數據不會混合/覆蓋全局。RactiveJS:具有(動態)本地數據的部分
問題是當部分數據發生變化時,主模板不會重新渲染。
到目前爲止我已經完成的最好的工作是獲得部分重新呈現在主容器中,但不是在主模板本身。
我錯過了什麼嗎?
下面的代碼(也JS Bin):
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="http://cdn.ractivejs.org/latest/ractive.js"></script>
</head>
<body>
<div id="main"></div>
</body>
</html>
JS:
var partial = new Ractive({
template: '{{name.first}} {{name.last}}',
oninit: function() {
this.observe(function (newValue, oldValue, keyPath) {
console.info('newValue = %o, oldValue = %o, keyPath = %s', newValue, oldValue, keyPath);
});
},
data: {
name: {
first: 'John',
last : 'Doe'
}
}
}),
main = new Ractive({
el: '#main',
// template: 'Hello {{name}}!',
template: 'Hello {{>partial}}!',
partials: {
partial: function (p) {
// 1) Not working...
// return '{{name.first}} {{name.last}}';
// 2) ...also not working...
// return partial.template;
// 3) ...still not working...
// return (p.isParsed(partial.template)) ? partial.template : p.parse(partial.template);
// 4) Kind of working... (static - does not re-render)
// return partial.toHTML();
// 5) Kind of working... (returning Promise!)
return partial.render(this.el);
}
},
data: {
name: 'John Doe'
}
});
// partial.set('name.first', 'Jane');
謝謝!我花了一些時間擺弄不同的方法,但選擇了你的第一個建議 - [強制部分的上下文](http://jsbin.com/firizefaja/edit?js輸出)。雖然我也是通過將部分數據放入「data」屬性的不同子對象中來「分離」數據。 – Miro