【问题标题】:Create spine controller创建脊椎控制器
【发布时间】:2011-10-12 04:14:16
【问题描述】:

我使用的是spinejs、coffeescript 和asp.net mvc。 以下是脊柱控制器类的代码:

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

    events:
        "click": "click"

    click: ->
        alert("Was clicked")

在 asp.net mvc 视图中,我包含了所有 js 和以下代码来初始化控制器:

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

但我看到以下错误:未捕获的 ReferenceError: Schedules is not defined。

更新: 现在我它什么也没做,也没有提供任何错误。我看不到我的警报消息。 但它应该在控制器创建后显示警报消息。 在控制器文件中:

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({});

【问题讨论】:

  • 为什么要投反对票?我实在想不通。你能帮帮我吗?

标签: asp.net-mvc coffeescript spine.js


【解决方案1】:

您应该考虑使用命名空间:

window.SchedulesApp = {}

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

    events:
        "click": "click"

    click: ->
        alert("Was clicked")

编辑

所以,您还有另一个问题,那就是您如何调用 super,这导致之后的所有内容都被包装到 super 的参数中。

我已使用 CS output with jsFiddle 修复它并在此答案中编辑了 CS。

希望这会有所帮助!

【讨论】:

  • Brian,我用你的方式定义了命名空间,我没有得到任何错误。但是未执行控制器构造函数中的警报。实际上什么都没有执行,如果我定义它们,我就不能调用控制器的方法。
  • @YaroslavYakovlev 你能创建一个 jsFiddle 来演示你的问题吗?
  • 这里是jsfiddle.net/dDaej 我试图调用controller.doStuff(方法未定义)。如果对此进行了重新处理,则控制器实例化时仍不会调用任何警报。我包含的js是从coffeescript生成的。
  • @YaroslavYakovlev 哈!看看你的小提琴中的javascript。您调用 super 的方式有问题,它将其他所有内容作为参数传递给 super……不好! :) 我编辑了我的回复并给了你一个有效的 jsFiddle。
  • 布莱恩,非常感谢!刚开始学习coffeescript和spine。感谢您提供帮助。
猜你喜欢
  • 2015-08-12
  • 2017-11-03
  • 2014-04-10
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 1970-01-01
  • 2018-03-11
相关资源
最近更新 更多