backbone.js – 视图应该设置模型数据吗?

我只想弄清楚一个可能很简单的问题.

视图是直接设置模型数据还是仅调用更改自己数据的模型方法

解决方法

像软件开发中的其他一切一样,“它取决于”.

如果您在视图中使用表单输入,并且只需要将这些输入中的数据输入到模型中,请直接设置数据.您可以通过多种方式执行此操作,包括从输入字段中“更改”事件,如下所示:

MyView = Backbone.View.extend({
  events: {
    "change #name","setName"
  },setName: function(e){
    var val = $(e.currentTarget).val();
    this.model.set({name: val});
  }
});

另一方面,如果您开始使用业务逻辑和其他恰好在模型中设置数据的代码(但实际上只将其作为业务逻辑的一部分),那么您应该在模型上调用方法.

一个“状态机”将是你何时这样做的一个很好的例子.或者,在我写的图库中,我对选择要显示的图像有一些逻辑.如果已选择图像,请勿再次选择.我把这个逻辑放在我的图像模型的方法中:

Image = Backbone.Model.extend({
  select: function(){
    if (!this.get("selected")){
      this.set({selected: true});
    }
  }
});

如这里所示,我喜欢按照简单的规则运行,如果我在设置调用周围没有逻辑,那么我可以从任何地方直接设置它.如果有任何与模型相关的逻辑,在集合周围,那么我把它放在模型中.

无论哪种方式,当您确实想要设置数据时,您应该使用set方法.绕过它并直接通过model.attributes设置模型的属性将阻止大量的Backbone代码触发并可能导致问题.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...