【问题标题】:backbone event listener on singleton object单例对象上的主干事件侦听器
【发布时间】:2013-04-26 15:19:14
【问题描述】:

我正在尝试创建一个单例对象作为主干视图的模型,并且我想在更改和更新此单例对象时重新渲染视图。我不确定以下代码是否正确

型号

define(function(require) {
     var Singleton = require("modules/Singleton");
     var Singleton = null;
     var SingletonHolder = {

        init: function() {
           Singleton = new Singleton();
           return Singleton.fetch();
        },

        current: function() {
           return Singleton;
        },

        refresh: function() {
           return Singleton.fetch();
        }
     };

    return SingletonHolder;
});

控制器

var currentObj = SingletonHolder.current();
var tempView = new TempView({
            model: currentObj
}); 

查看

var TempView = Backbone.View.extend({
    initialize: function() {
         this.listenTo(this.model, "change", this.render);
    }

    render: function() {
         ...
    }

});

由于某些原因,它不起作用。我错过了什么吗?我还尝试调用 Singleton.refresh,它将它转到服务器端并从数据库中获取最新数据,但它没有检测到更改并重新渲染视图。

【问题讨论】:

    标签: javascript backbone.js requirejs backbone-views backbone-events


    【解决方案1】:

    如果您已经使用 requirejs,则不必定义 Singleton。

    单例:

    define(['models/foo'], function(FooModel){
      return new FooModel;
    })
    

    控制器:

    define(['foosingleton', 'tempview'], function(fooSingleton, TempView){
      var tempView = new TempView({
        model: fooSingleton
      }); 
    });
    

    这里有一个类似的问题:Is it a bad practice to use the requireJS module as a singleton?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 2016-10-31
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多