components - 如何动态创建Ractive的子组件并以编程方式更改它们

标签 components ractivejs

我可以使用标签手动实例化(子)组件,但是我不知道如何动态地执行它,或者不知道如何使用标签在同一区域插入和删除不同的组件。

今天,我以这种方式实例化每个(子)组件:

Ractive.load( '/templates/global/example.html' ).then( function ( Example )
{
       ractive.components.example = new Example( { el : 'aside' } );
});

但是新的(子)组件在 mustache 中看不到其父实例的数据,只能看到他自己的数据。

最佳答案

这是一个动态组件:

Ractive.components.dynamic = Ractive.extend({
    template: '<component/>',
    components: {
        component: function() {
            return this.get('name');
        }
    },
    oninit: function(){
        this.observe('name', function(){
            this.reset();
        }, { init: false});
    }
});

只需传递它应该实现的组件的名称即可:
<dynamic name='{{name}}'/>

看到下面的行动

Ractive.components.a = Ractive.extend({ template: 'I am A {{foo}}' });
Ractive.components.b = Ractive.extend({ template: 'I am B {{foo}}' });
Ractive.components.c = Ractive.extend({ template: 'I am C {{foo}}' });

Ractive.components.dynamic = Ractive.extend({
    template: '<component/>',
    components: {
        component: function() {
            return this.get('name');
        }
    },
    oninit: function(){
        this.observe('name', function(){
            this.reset();
        }, { init: false});
    }
});


var r = new Ractive({
    el: document.body,
    template: '#template',
    data: {
        foo: 'foo',
        list: ['a', 'b', 'c'],
        name: 'a'
    }
});
<script src="http://cdn.ractivejs.org/latest/ractive.js"></script>
<script id='template' type='text/ractive'>
   
    {{#each list}}
    <input type='radio' name='{{name}}' value='{{.}}'>{{.}}
    {{/each}}
    <br>
    <dynamic name='{{name}}'/>
       
</script>

关于components - 如何动态创建Ractive的子组件并以编程方式更改它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31075341/

相关文章:

javascript - ReactJS - 如何使用子按钮删除整个组件

angular - 通知子组件它是父组件 Angular FormGroup 的一部分

macos - Mac OS X 有语法高亮编辑器组件吗

javascript - 事件模板、部分模板和组件模板之间有什么区别

vue.js - 在 Vue.js 中动态实例化组件

javascript - Ractivejs 中的递归部分超出调用堆栈

javascript - RactiveJS 动态添加子组件

javascript - 如何将 gridstack.js 添加到 Ractive.js?

javascript - 在ractive js中使用下划线进行排序

javascript - 如何在 React 中定位 DOM 元素列表