【问题标题】:backbone extend and calling functions主干扩展和调用函数
【发布时间】:2013-01-17 14:16:53
【问题描述】:

我认为我误解了一些范围界定问题。 我正在运行 TODO 主干应用程序并在“new app.AppView();”之后运行

我正在尝试这个: app.AppView.render()

以及我认为正在扩展的其他功能,但它们似乎不可用。

第二个问题是..为什么chrome开发者工具在TODORouter和Todos旁边说“child”

编辑 待办事项链接 TODO

这是我主要参考的代码

$(function() {

    // Kick things off by creating the **App**.
    new app.AppView();

});

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    将新的 appview 保存在 var 中,然后从那里使用它。

    var myAppView = new app.AppView();
    // ...
    myAppView.render();
    

    【讨论】:

    • 很好用,为什么?我确定这是我不知道的基本 js。如果这些对象在初始加载后仍然可用,那么为什么扩展功能不可用?第二个问题呢?
    【解决方案2】:

    您没有范围界定问题,但有点“处理 javascript”问题。

    app.AppView 存储了一个名为AppViewFunction 对象。在 javascript 中,函数在称为原型继承的系统中用作“类”(不要考虑 Java 类!)。不要混入其中。

    当你打电话时

    new app.AppView()
    

    你为这个AppView'class'创建了一个新的instance,它是一个对象。所以当你打电话时

    app.AppView.render()
    

    您正在尝试调用“类”(或类但不完全类)的函数渲染。现在这有点不对。

    因此(就像在 Java 或任何其他 oo 语言中一样),您必须通过将构造函数调用到变量来存储您获得的实例。

    var appView = new app.AppView();
    

    现在你有了一个实例,你可以用它做任何你想做的事情

    appView.render();
    

    【讨论】:

    • 到达那里....但是股票 TODO 代码不会创建 AppView 的命名实例,那么在呈现所有内容后它如何访问这个(新的 app.AppView())视图?
    • 也许你应该发布一个指向这个 todo 教程的链接
    猜你喜欢
    • 2014-01-16
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    相关资源
    最近更新 更多