Я пытаюсь разделить данные на частичные части, чтобы данные не смешивались/переписывались по всему миру.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,output). Хотя я также отчасти «разделял» данные, помещая частичные данные в отдельные под-объекты свойства data. – Miro