如何在没有魔术模式的情况下处理全局配置?

时间:2017-06-26 12:22:43

标签: ractivejs

从v0.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 个答案:

答案 0 :(得分:0)

假设您有对该实例的引用,您可以在设置新数据后调用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