我正在尝试使用browserify和es6设置木偶项目。创建CollectionView时,我收到错误Uncaught TypeError: Backbone.ChildViewContainer is not a constructor
。
我错过了加载的东西吗?似乎无法在互联网上找到任何相关信息。
这是我的收藏视图:
import {ItemView, CollectionView} from 'backbone.marionette';
import navTemplate from '../templates/navigation.hbs';
import navItemTemplate from '../templates/_navItem.hbs';
var NavigationItem = ItemView.extend({
template: navItemTemplate
});
var NavigationView = CollectionView.extend({
template: navTemplate,
childView: NavigationItem,
childViewContainer: '.left-navigation',
});
export default NavigationView;
和我创建它的布局
import {LayoutView} from 'backbone.marionette';
import layoutTemplate from './templates/layout.hbs';
import NavigationView from './Views/navigation';
export default class AppLayout extends LayoutView {
constructor(options) {
super(options);
this.template = layoutTemplate;
}
regions() {
return {
'navigation': '.left-aside'
};
}
onRender() {
console.log(this.getRegion('navigation'));
this.getRegion('navigation').show(new NavigationView());
}
}
我也使用垫片来使用backbone.radio,但这不应该影响这个:
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define(['backbone.marionette', 'backbone.radio', 'underscore'], factory);
} else if (typeof exports !== 'undefined') {
module.exports = factory(require('backbone.marionette'), require('backbone.radio'), require('underscore'));
} else {
factory(root.Backbone.Marionette, root.Backbone.Radio, root._);
}
}(this, function(Marionette, Radio, _) {
'use strict';
Marionette.Application.prototype._initChannel = function () {
this.channelName = _.result(this, 'channelName') || 'global';
this.channel = _.result(this, 'channel') || Radio.channel(this.channelName);
};
}));
编辑:我发现我的编译文件有很多主干副本,所以可能是问题......
答案 0 :(得分:2)
我遇到了Webpack这个问题。我能够通过在webpack.config.js
中指定别名来解决它resolve: {
extensions: ['', '.js', '.ts'],
alias: {
'backbone': 'backbone.marionette/node_modules/backbone'
}
},
即。确保所有对骨干的引用都使用作为Marionette的依赖项安装的那个。
我从未使用过Browserify,但也许你可以通过安装aliasify并将其添加到你的package.json来做类似的事情:
{
"aliasify": {
"aliases": {
"backbone": "backbone.marionette/node_modules/backbone"
}
}
答案 1 :(得分:0)
今天早上使用指向Marionette 2.4.1和Backbone 1.2.1的旧JSPM配置文件时出现同样的错误,谷歌将我链接到这里......更新到最近的Marionette 2.4.5和Backbone 1.3。 2个版本似乎为我解决了问题。你在运行什么版本?