相关疑难解决方法(0)

Backbone 0.9.9:listenTo和on之间的区别

我试图了解他们在Backbone 0.9.9中所做的新变化.

目前,我有问题理解之间的区别listenToon:

listenTo

var View = Backbone.View.extend({

    tagName: "div",

    intialize: function() {
        this.listenTo(this.model, 'change', this.render);
    },

    render: function() {
        this.$el.empty();
        this.$el.append('<p>hello world</p>');
    }

});
Run Code Online (Sandbox Code Playgroud)

var View = Backbone.View.extend({

    tagName: "div",

    intialize: function() {
        this.model.on('change', this.render, this);
    },

    render: function() {
        this.$el.empty();
        this.$el.append('<p>hello world</p>');
    }

});
Run Code Online (Sandbox Code Playgroud)

我听说listenTo允许stopListening取消订阅所有事件,例如删除视图以避免内存泄漏.

这是唯一的原因吗?

javascript events backbone.js backbone-events

55
推荐指数
2
解决办法
2万
查看次数

Backbone.js查看继承

我有一个视图Pannel,它只是一个带有关闭按钮的背景.我想将该视图扩展为一个名为PannelAdvanced.我怎么能用backbone.js做到这一点?

现在所有的例子都有,Backbone.View.Extend但只是延伸Backbone.View; 我想扩展我的PannelView.

inheritance backbone.js

40
推荐指数
3
解决办法
2万
查看次数

Backbone视图的最佳实践:重用还是创建?

多年来这个问题让我感到震惊......

假设我有一个非常简单的Backbone应用程序,其中包含一个项目列表.单击某个项目时,您会看到该项目的详细视图.

是不是更好

  • 创建一个DetailedView并在用户点击不同的项目时重复使用它; 要么
  • 每次点击都会创建一个新的详细视图?

我更喜欢选项2,但有问题因为我没有正确地破坏视图,并且从无处开火的事件中获得臭名昭着的"鬼视图"问题!

什么是最佳做法?

backbone.js

8
推荐指数
1
解决办法
2827
查看次数

在BackboneJS中调用render()的适当方法

在我看过的大多数BackboneJS示例中,父视图调用render()子视图上的函数.这对我来说有点奇怪.也许它完全用于优化或其他东西,但我不明白为什么优化不能在子视图本身内发生.儿童观点是否应该负责自己打电话render()?在我的所有观点中,我最终得到的结论如下:

initialize: function() {
    this.render();
}
Run Code Online (Sandbox Code Playgroud)

此外,如果我的父视图更新了子视图的model属性,那么孩子应该如何知道模型已更改(因此render()需要调用)?我假设在这种情况下,父母被迫打电话给孩子render().虽然有点推断,为什么父母需要知道孩子在模型改变时需要重新渲染?看起来调用子视图的render函数在父视图的域之外.

javascript backbone.js

7
推荐指数
1
解决办法
3032
查看次数

如何将Backbone.js应用程序安全地连接到数据库?

我开始计划一个网络应用程序,Backbone.js将非常适合客户端.我一直在计划为后端使用节点,但这暂时是开放的.

我需要一种方法来保护前端应用程序与数据库的连接.我在Quora上与其他人进行讨论,但我认为思考过程从核心问题中抽象得过于抽象.

我更喜欢通过RESTful端点访问数据,但我需要确保只有我的应用可以与API通信.我将完全控制应用程序的前端和后端.有可能围绕数据库构建其他应用程序(一年或两年),但是它们将由我开发(即不是公共API),并且这些可能会使用单独的OAuth端点.

关于应用程序的一些注释(可能有用也可能没用):

  • 该应用程序计划以SaaS模式提供,公司订阅并允许多个用户.
  • 每家公司的数据都需要是安全的,只有该公司的成员才能访问.
  • 所有流量(前端和应用程序到API)都将通过SSL发送.

任何关于最佳方法的建议将不胜感激.

security rest restful-authentication client-side backbone.js

6
推荐指数
1
解决办法
2380
查看次数

Backbone.js事件和内存管理

我想使用Backbone.js进行一些事件处理,但我对周期性引用和内存管理没有信心.假设我有一些名为EventStation的静态事件源 - 所以,在脚本开头我说:

var source = new EventSource();
Run Code Online (Sandbox Code Playgroud)

source是为了生活的页面生活,这很好.现在,我还有一个事件消费者:

var EventConsumer = Backbone.Model.extend({
    initialize: function(params) {
        source.on("some_event",this.onSomeEvent,this);
    }
});

function later() {
    var consumer = new EventConsumer();

    // consumer now gets leaked... (I think)
}
Run Code Online (Sandbox Code Playgroud)

later()在某个时候打电话- 最后,我不再有任何消费者的权利,除非我去挖掘内部的东西source.我想我需要添加一些新功能EventConsumer,比如

cleanup: function() {
    source.off("some_event",this.onSomeEvent,this);
}
Run Code Online (Sandbox Code Playgroud)

然后在最后调用它later().

这似乎......不像我想的那么干净.有没有办法更好地做到这一点?如果我使用DOM事件,这会有不同的处理方式吗?

javascript backbone.js

2
推荐指数
1
解决办法
1228
查看次数