Ractivejs Component.defaults在创建抽象js组件时未定义

Ractivejs Component.defaults在创建抽象js组件时未定义,ractivejs,Ractivejs,我正试图在我的项目中创建一个新的实用组件,就像一个简单的测试用例一样。但是,当呈现包含该组件的部分时,我在ractive.js中得到一个错误,即component.defaults在该行中未定义 adapt = combineAdaptors( root, Component.defaults.adapt, Component.adaptors ); 事实上,Component对象中唯一的东西就是我添加的组件 作为参考,我使用的是Ractive.js4.0 // productCompone

我正试图在我的项目中创建一个新的实用组件,就像一个简单的测试用例一样。但是,当呈现包含该组件的部分时,我在ractive.js中得到一个错误,即component.defaults在该行中未定义

adapt = combineAdaptors( root, Component.defaults.adapt, Component.adaptors ); 
事实上,Component对象中唯一的东西就是我添加的组件

作为参考,我使用的是Ractive.js4.0

// productComponent.js
define(['ractive', 'rv!accordion/productComponent'], function(Ractive) {

    var productComponent = {};

    // add module properties here
    productComponent.ProductComponent = Ractive.extend({

        template: productComponent,

        init: function(options) {
                console.log('init');
        },

        data: {

        }

    });

    Ractive.components.productComponent = productComponent.ProductComponent;

    return productComponent;
});
然后,在家长实践中,我有:

components: {
    'productComponent': productComponent
}
其中productComponent是对productComponent.js文件的引用

模板使用此选项在循环中创建组件

{{#items:key}} 
    <productComponent product="{{product}}" />
{{/items}}
您需要从productComponent.js返回productComponent.productComponent构造函数,而不是productComponent,如果在父级中引用它,那么父级上的components:{}选项将覆盖Ractive.components.productComponent

此外,如果您使用的是rv.js,那么您可以这样引用模板:

//productComponent.js 定义['ractive',rv!accordion/productComponent'],functionRactive,模板{ var productComponent={}; //在此处添加模块属性 productComponent.productComponent=Ractive.extend{
template:template,//非常好用!谢谢。我知道这可能很简单。