【问题标题】:I dont' understand Backbone.js event system. No event for load?我不明白 Backbone.js 事件系统。没有加载事件?
【发布时间】:2013-10-20 19:50:23
【问题描述】:

所以我正在构建一个 BB 应用程序,并尝试在加载 DOM 时调用我的视图的方法。

LoginView = Backbone.View.extend({
    events: {
        'load': 'connexion'
    },
    connexion: function(e) {
        var connecte = window.localStorage.getItem("connecte")?true:false;
        alert(connecte);
    }
});

所以我查看了 BB​​ 文档,发现没有加载事件。事件是否仅与模型的数据有关?如果 BB 没有“文档事件”,我需要在此之后立即执行此操作:

$(function () {
   var view = new LoginView();
   view.connexion();
})

这和没有 MVC 架构一样吗?我的意思是,如果不是所有代码都在方法中,那么拥有控制器(视图)有什么意义?抱歉,如果我不完全了解 MVC 架构。

【问题讨论】:

  • 你认为load() 什么时候会被调用?你什么时候initialize看的?因为已经有一个回调。或者当您render 或将元素放入 DOM 时?这两者都不是自动的,需要您的干预,在这种情况下,您可以在需要时在视图中触发 load 事件...只有少数 HTML 标记使用触发加载事件(如 @987654327 @),主干视图的默认值为 <div/> 元素。
  • 你是对的。另外,我应该在何时何地实例化我的视图?在控制器的文件中正确地声明了对象?还是在 HTML 文件中?

标签: jquery model-view-controller backbone.js backbone-views backbone-events


【解决方案1】:

Backbone 应用程序的 MV* 架构实际上与初始应用程序加载过程没有任何关系。我认为习惯上要么有一个 load() 或 init() 函数,一旦加载文档就会调用它,或者创建一个整体 AppView,它的作用相同。然后开始加载 Backbone 应用程序、其视图、模型和集合以及设置路由器的过程。

【讨论】:

    【解决方案2】:

    您可以从视图的initialize 回调内部调用connexion()

    LoginView = Backbone.View.extend({
        initialize: function(options){
            this.connexion();
        },
        connexion: function(e) {
            var connecte = window.localStorage.getItem("connecte")?true:false;
            alert(connecte);
        }
    });
    

    【讨论】:

    • 好的,你删除了它^^。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多