Как работать с глобальным конфигом без магического режима?

С версии 0.9 "магический режим" удален.
Как мы теперь должны обрабатывать сценарии, как в этом примере:

Обновление всех цен при обновлении глобального конфига с тарифами
http://jsfiddle.net/Inversion/7an5hdb5/

conf =
    g_currency_exchange_rates:
        usd:27

win.r = new Ractive
    el: 'cont'
    template: '#tpl'
    magic:true
    data:
        conf:conf
        items_prices_usd: [5, 10, 25]
        in_uah: (v)-> v * @get 'conf.g_currency_exchange_rates.usd'

update_rate = ->
    conf.g_currency_exchange_rates.usd += Math.round(Math.random()*2-1)
setInterval update_rate, 500

В этом примере есть только один экземпляр Ractive, но представьте, что у вас есть несколько разных на странице, и все они используют одну и ту же конфигурацию и должны динамически обновлять любые изменения скорости. И они действительно должны быть отдельными корневыми экземплярами, а не вложенными компонентами.
Например, если вы вошли в систему как администратор - панель администратора может отображаться по требованию, и она похожа на другое приложение, но опирается на ту же конфигурацию.

1 ответ

Если у вас есть ссылка на экземпляр, вы можете позвонить ractive.update() после установки новых данных.

https://jsfiddle.net/artvhvpo/

console.clear();win=window

conf =
    g_currency_exchange_rates:
        usd:27

win.r = new Ractive
    el: 'cont'
    template: '#tpl'
    magic:true
    data:
        conf:conf
        items_prices_usd: [5, 10, 25]
        in_uah: (v)-> v * @get 'conf.g_currency_exchange_rates.usd'

update_rate = ->
    conf.g_currency_exchange_rates.usd += Math.round(Math.random()*2-1);win.r.update()
setInterval update_rate, 500
Другие вопросы по тегам