这是我的 application.js 文件
window.App = {
init: function() {
this.router = new PackageViewer();
Backbone.history.start();
}
};
这是调用这里的另一个 packageviewer.js
window.PackageViewer = new Backbone.Router.extend({
routes : {
'':'home'
},
initialize:function(){
this.collection = new Package();
},
home:function(){
$('body').append("<h1>Welcome</h1>");
}
});
这是我在 <body>
中的 index.html 脚本标签
<script type="text/javascript">
$(document).ready(function (){
App.init();
});
</script>
当我运行它时,我得到 TypeError: 'undefined' is not a function (evaluating 'parent.apply(this, arguments)')
我无法理解这一点。帮助!
最佳答案
改变这个:
window.PackageViewer = new Backbone.Router.extend({
routes : {
'':'home'
}
为此:
window.PackageViewer = Backbone.Router.extend({
routes : {
'':'home'
}
因为在这里你应该只是扩展 Backbone.Router,而不是创建一个新实例。
当您调用 `this.router = new PackageViewer(); 时,您在 App.init 中正确地创建了一个新实例;
我用虚拟包模型和集合对此进行了测试,它有效。
window.Package = Backbone.Model.extend({
});
window.Packages = Backbone.Collection.extend({
model: Package
});
关于javascript - 我如何处理主干路由器的这个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016555/