所以我開始使用Backbone/CoffeeScript創建這個新應用程序。我使用的是Sinatra的後端,因此我的Coffeescript編譯器是默認的命令行,它只是創建js文件。我試圖創建一個應用程序,其中有一個其他類繼承的主類。出於某種原因,我收到了一些錯誤。下面是錯誤Backbone/Coffeescript中的繼承問題
TypeError: 'undefined' is not an object (evaluating 'n.replace')
TypeError: 'undefined' is not an object (evaluating 'parent.prototype')
TypeError: 'undefined' is not a constructor (evaluating 'new FileApp.UploaderView()')
這裏是我的基類
class FileApp.Controller extends Backbone.View
template: _.template($('#FileAppTemplate').html())
initialize: (office) ->
@office = office
@render()
render: ->
# Attach view to DOM
$('#fileUploaderApp').append(@$el)
bindViews: (uploaderView, fileViewerView, fileDetailView) ->
@uploaderView = uploaderView
@fileViewerView = fileViewerView
@fileDetailView = fileDetailView
這裏是一個繼承類
class FileApp.FileViewerView extends FileApp.Controller
template: _.template($('#FileViewTemplate').html())
#
# render ->
#
render: ->
@$el.html(@template)
# Append to fileViewer Div
@renderFiles()
#
# createFiles ->
#
renderFiles: ->
的一個例子,這裏是我的.erb文件是如何加載每個項目並實例化應用程序。
<script id="namespacing">
//All backbone classes attach to this variable
var FileApp={};
</script>
<!-- Underscrore/Backbone -->
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"></script>
<script src="/js/fileUploader/libs/file_app_view.js"></script>
<script src="/js/fileUploader/libs/uploader_view.js"></script>
<script src="/js/fileUploader/libs/file_detail_view.js"></script>
<script src="/js/fileUploader/libs/file_model.js"></script>
<script src="/js/fileUploader/libs/file_viewer_view.js"></script>
<script src="/js/fileUploader/libs/file_view.js"></script>
<div id="fileUploaderApp"></div>
<script>
$(document).ready(function(){
var App = new FileApp.Controller();
// # Create Uploader
var uploaderView = new FileApp.UploaderView();
// # Create File Viewer
var fileViewerView = new FileApp.FileViewerView();
// # Create File Detail View
var fileDetailView = new FileApp.FileDetailView();
App.bindViews(uploaderView, fileViewerView, fileDetailView)
});
</script>
如果有人能澄清我的問題是什麼那會很好。
這是你的真實密碼?如果是的話,你必須縮進班級的方法。領先的空格在Coffeescript中很重要。 – 2013-05-10 14:17:27
不......我猜這裏搞糊塗了。我相信,我的代碼中的縮進是正確的。它肯定不會像上面那樣.. – 2013-05-10 14:47:55
不要混合標籤和空格,至少。 – 2013-05-10 14:50:08