2011-08-10 27 views
3

這是我的application.js文件如何處理Backbone Router的這個錯誤?

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>"); 
} 
}); 

,這裏是我的index.html的腳本代碼,裏面<body>

<script type="text/javascript"> 
$(document).ready(function(){    
    App.init(); 

}); 
</script> 

當我跑這個我得到TypeError: 'undefined' is not a function (evaluating 'parent.apply(this, arguments)')

我無法理解這一點。幫幫我!

回答

8

更改此:

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 
}); 
+0

@rulfzid ..謝謝你的工作。 – JABD

相關問題