Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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,我有一个集合,我知道它正在获取整个集合,但是如何访问从获取中返回的数据 /js/views/idea.js define([ 'jquery', 'underscore', 'backbone', 'collections/ideas' ], function($, _, Backbone, IdeasCollection) { var IdeasView = Backbone.View.extend({ el: $('#container'), ren

我有一个集合,我知道它正在获取整个集合,但是如何访问从获取中返回的数据

/js/views/idea.js

define([
  'jquery', 
  'underscore', 
  'backbone',
  'collections/ideas'
], function($, _, Backbone, IdeasCollection) {

  var IdeasView = Backbone.View.extend({
    el: $('#container'),
    render: function(){

      this.collection = new IdeasCollection();

      console.log( this.collection.fetch() ); // I can see data

      var data = {};
      var template = _.template( $('#ideasView').html(), data);

      $('body').removeClass().addClass('blog');
      this.$el.html( template );
    }
  });

  return IdeasView;
});
/js/collections/ideas.js(为简洁起见缩短)


fetch
是异步的。必须使用事件绑定样式

var IdeasView = Backbone.View.extend({
    initialize: function () {
      this.collection = new IdeasCollection();
      this.listenTo(this.collection, 'sync', this.render);
      this.collection.fetch();
    },
    render: function(){
      var template = _.template( $('#ideasView').html(), this.collection.toArray());

      $('body').removeClass().addClass('blog');
      this.$el.html( template );
    }
  });

  return IdeasView;
});
另一种方式

var that = this;

this.collection = new IdeasCollection();
this.collection.fetch({success: function (){
    that.render();
}});

根据这一点,我可以添加一个回调来获取。这不是比附加事件处理程序更简洁吗?只是好奇。您可以执行事件或成功处理程序回调。事件更适合主干网,有时可能更正确(无论事件触发多少次都会响应),但两者都可以工作。主要的一点是你知道它不是同步的。
var that = this;

this.collection = new IdeasCollection();
this.collection.fetch({success: function (){
    that.render();
}});