Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何改进我的主干代码_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何改进我的主干代码

Javascript 如何改进我的主干代码,javascript,backbone.js,Javascript,Backbone.js,我开始在Backbone.js中进行开发。 我仍然不知道如何使用最佳实践编写代码 我的应用程序正在工作,但我有一些问题,例如,比较器不工作 我真的会帮助他变得更好 视图: 收藏: Todos.Collections.TasksCollection = Backbone.Collection.extend({ model: Todos.Models.TasksModel url: "/api/tasks.json", comparator: function (sort) {

我开始在Backbone.js中进行开发。 我仍然不知道如何使用最佳实践编写代码

我的应用程序正在工作,但我有一些问题,例如,比较器不工作

我真的会帮助他变得更好

视图:

收藏:

Todos.Collections.TasksCollection = Backbone.Collection.extend({

  model: Todos.Models.TasksModel
  url: "/api/tasks.json",
  comparator: function (sort) {
      return -(new Date(sort.get('eventTime'))).getTime();
  },

  parse: function (response) {
      return response;
  }

});
型号:

Todos.Models.TasksModel = Backbone.Model.extend({
  parse: function (response, options) {
      return response;
  }
});
路由器:

Todos.Routers.TasksRouter = Backbone.Router.extend({
  routes: {
      '': 'index'
  },
  initialize: function () {
      var viewTasks = new Todo.Views.TasksView({
          model: Todos.Models.TasksModel,
          el: '.tasks-list'
      });
  }
});
App.js:

window.Todos = {
    Models: {},
    Collections: {},
    Views: {},
    Routers: {},
    initialize: function () {
       new Todos.Routers.TasksRouter();
       Backbone.history.start({})
    },


$(document).ready(function () {
    Todos.initialize();
});

在视图中,尽量不要使用诸如获取、保存或设置之类的模型或集合功能。这不是视图的责任

示例:不要在集合中包含此.collection.fetch(),而是执行以下操作

this.collection = new Todos.Collections.TasksCollection();


    this.collection.getSomething();

    this.render();

    this.listenTo(this.collection, 'reset', this.render);
    this.listenTo(this.collection, 'change', this.render);
    this.listenTo(this.collection, 'sort', this.render);
在集合中,添加一个方法来执行“fetch()”请求。 我不明白你为什么要声明解析函数。。你什么也没做。。 当我想在将JSON绑定到模型/集合之前更改JSON中的内容时,我喜欢使用parse函数

我看不出你在哪里调用比较器函数。。“sort”参数的值可能无效

在您的模型中,您正在再次使用解析。。我看不出原因

你的路由器没问题。 我喜欢你的代码。。就像你说的,对于初学者来说。真的很好

我建议你用短划线代替下划线。。。它有更多用于阵列的选项

尝试使用require.js加载js依赖项。。这对你会有很大帮助。 www.requirejs.org


希望有帮助。

比较器不工作
-所以调试它并告诉我们它是如何工作的。不工作:(“sort”只返回一项,但json有5个iten。如果我尝试log sort.eventTime,则返回未定义。
this.collection = new Todos.Collections.TasksCollection();


    this.collection.getSomething();

    this.render();

    this.listenTo(this.collection, 'reset', this.render);
    this.listenTo(this.collection, 'change', this.render);
    this.listenTo(this.collection, 'sort', this.render);