2011-10-11 77 views
1

我使用spinejs,coffeescript和asp.net mvc。 繼承人脊柱控制器類代碼:創建脊椎控制器

class Schedules extends Spine.Controller 
    constructor: -> super alert "Created" 

    events: 
     "click": "click" 

    click: -> 
     alert("Was clicked") 

在我有所有的JS包括一個asp.net MVC視圖和下面的代碼初始化控制器:

$(document).ready(function() { 
    var sched = new Schedules({ 
     el: $("#myId") 
    }); 
}); 

但我看到下面的錯誤: Uncaught ReferenceError:時間表未定義。

更新: 現在我不做任何事情,也沒有提供任何錯誤。我無法看到我的警報消息。 但它應該在控制器創建後顯示警報消息。 在控制文件:

window.SchedulesApp = {} 
class SchedulesApp.Schedules extends Spine.Controller 
//futher controller code 

在asp.net MVC視圖我有以下幾點:

<script type="text/javascript"> 
      $(document).ready(function() { 
       var controller = new SchedulesApp.Schedules({}); 
+0

爲什麼downvote?我真的不知道。你能幫我麼? –

回答

2

您應該考慮使用命名空間:

window.SchedulesApp = {} 

class SchedulesApp.Schedules extends Spine.Controller 
    constructor: -> 
     super 
     alert "Created" 

    events: 
     "click": "click" 

    click: -> 
     alert("Was clicked") 

編輯

所以,你有另一個問題a nd這就是你打電話給super的方法,這會導致以後的所有事情都被包裝到super的參數中。

我已經用CS output with jsFiddle修復了它,並在此答案中編輯了CS。

希望這會有所幫助!

+0

Brian,我用你的方式來定義命名空間,我沒有得到任何錯誤。但是,在控制器構造函數中的alert沒有被執行。實際上沒有任何執行,如果我定義它們,我不能調用控制器的方法。 –

+1

@YaroslavYakovlev你可以創建一個jsFiddle來展示你的問題嗎? –

+0

這裏是http://jsfiddle.net/dDaej/ 我試圖調用controller.doStuff(和方法沒有定義)。如果迴避這一點,在控制器實例化上仍然沒有警報。我所包含的js是由coffeescript生成的。 –