2011-10-11 68 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生成的。 –