jquery - 为什么集合获取后 el 未定义

标签 jquery backbone.js requirejs backbone-views backbone-events

我有这个 View (ordersView),它在初始化时获取订单并在完成后重新渲染 View 。 el 属性是在路由器中实例化所述 View 等时定义的。我在实例化后调用渲染并显示 #order el,但在 fetch el 后未定义,这是为什么?

console logs notice logs on line 36

我的ordersView.js View :

// Menu View
// =============

// Includes file dependencies
define([ "jquery",
         'underscore',
         "backbone",
         'handlebars',
         "collections/menu",
         "collections/orders",
         "collections/stores",
         'hbs!template/ordersTemplate',
], function( $, _, Backbone, Handlbars, MenuCollection, OrdersCollection, StoresCollection, OrdersTemplate ) {

    // Extends Backbone.View
    var OrdersView = Backbone.View.extend( {


        // The View Constructor
        initialize: function() {

            OrdersCollection.fetch({'success': this.render})

        },

        events: {
        },        

        showMoreInfo: function(e) {
            $(e.target).closest('.store').toggleClass('hideinfo');
        },

        // Renders all of the Category models on the UI
        render: function() {
            console.log('rendered');
            console.log( this.$el );
            this.$el.html( OrdersCollection.toJSON() );

        }


    } );

    // Returns the View class
    return OrdersView;

} );

这是我的router.js 文件:

// Filename: router.js
define([
  'jquery',
  'underscore',
  'backbone',
  '../views/ordersView',
], function($, _, Backbone, OrdersView) {

  var AppRouter = Backbone.Router.extend({
    routes: {
      // Default
      '*actions': 'defaultAction'
    }
  });

  var initialize = function(){

    var app_router = new AppRouter;

    app_router.on('route:defaultAction', function (actions) {
        var ordersView = new OrdersView({ el: $("#orders") });
        ordersView.render();
    });

    Backbone.history.start();
  };
  return { 
    initialize: initialize
  };
});

我正在使用 JQuery jquery-1.10.2、Backbone.jsBackbone-amd 1.0.0 和 RequireJS AMD 加载器

最佳答案

尝试将执行上下文绑定(bind)到 render(),然后再填充到 .fetch()

例如

OrdersCollection.fetch({'success': _.bind(this.render, this)})

关于jquery - 为什么集合获取后 el 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17518878/

相关文章:

javascript - 将 Junior Framework 与 Meteor 结合使用(Jr 未定义)

javascript - Marionette Backbone : Childviews with multiple possible view states

javascript - nodeclipse 中每个外部 java 脚本文件都出现错误

jQuery 计算列表项的数量,然后将其乘以数量并设置为宽度

如果 id 是数字,JQuery 将不会切换

jQuery "this"加上其他选择器?

javascript - 错误 : $injector:modulerr Module Error on running the application?

requirejs - Electron - 解决渲染器进程中的 Electron 模块问题

javascript - 带有 RequireJS 的 Knockout 映射插件 : Uncaught Error: Mismatched anonymous define() module

javascript - 在 JavaScript 中将小数相加