0

そこで、Backbone/CoffeeScript を使用してこの新しいアプリを開始します。私は Sinatra のバックエンドを使用しているので、私の Coffeescript コンパイラは、js ファイルを作成するだけのデフォルトのコマンド ラインです。他のクラスが継承するマスター クラスがあるアプリを作成しようとしています。何らかの理由で、いくつかのエラーが発生しています。ここにエラーがあります

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>

誰かが私の問題が何であるかを明確にできれば、それは素晴らしいことです.

4

2 に答える 2