Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 _.bindAll在渲染主干视图时不工作_Javascript_Backbone.js - Fatal编程技术网

Javascript _.bindAll在渲染主干视图时不工作

Javascript _.bindAll在渲染主干视图时不工作,javascript,backbone.js,Javascript,Backbone.js,除了处理上下文之外,我还试图理解主干bindAll函数。在这种情况下,以下实现不起作用 创建视图以插入列表中的数据 _.所有这些,“呈现”;你能在函数do中看到它的上下文吗$此.el未定义。使用_bindAll难道不管用吗 以下内容不附加在ol列表中 HTML 您没有在render中直接使用this.el,而是在一个0.each回调中使用,该回调是另一个具有不同上下文的函数。您需要确保它也具有相同的上下文,您可以简单地像u.eachfunction{}一样实现它,因为它接受上下文作为第二个参数

除了处理上下文之外,我还试图理解主干bindAll函数。在这种情况下,以下实现不起作用

创建视图以插入列表中的数据

_.所有这些,“呈现”;你能在函数do中看到它的上下文吗$此.el未定义。使用_bindAll难道不管用吗

以下内容不附加在ol列表中

HTML

您没有在render中直接使用this.el,而是在一个0.each回调中使用,该回调是另一个具有不同上下文的函数。您需要确保它也具有相同的上下文,您可以简单地像u.eachfunction{}一样实现它,因为它接受上下文作为第二个参数

或者,如果您使用ES6,则可以使用arrow函数作为回调函数,该回调函数不会创建新的上下文,如0.eachi=>{}

,您不会在render中直接使用this.el,而是在0.each回调函数中使用,该回调函数是具有不同上下文的另一个函数。您需要确保它也具有相同的上下文,您可以简单地像u.eachfunction{}一样实现它,因为它接受上下文作为第二个参数

或者,如果您使用ES6,您可以使用arrow函数作为回调函数,它不会创建新的上下文,如{u0.eachi=>{}

,尽管您使用它

也。你应该直接使用这个。$el

请注意,它与主干无关。由于问题来自嵌套的每个回调上下文,一旦修复,您就根本不需要u.bindAll

事实上,我从来都不需要uu.bindAll,而且当我在教程中看到它时,大多数情况下,这是因为它已经过时或被错误地使用了。

,尽管你已经习惯了

也。你应该直接使用这个。$el

请注意,它与主干无关。由于问题来自嵌套的每个回调上下文,一旦修复,您就根本不需要u.bindAll


事实上,我从来都不需要u.bindAll,而且在教程中看到它时,大多数情况下,都是因为它过时或使用错误。

请在发布之前正确设置代码格式…如果可以这样说,请不要说$this.el。$el。主干缓存jQuery包装的el,因此您应该使用它。请在发布之前正确格式化代码…可以这样说时不要说$this.el。$el。主干缓存jQuery包装的el,因此您应该使用它。
$(this.el).append('idCurso->', cursoModelo.get('idCurso'),' titulo-> ', cursoModelo.get('titulo'));
$(this.el).append('hola caracola');`. 
<ol id="ListaLibros"/>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
// create a view to print the model data in the html
var ListaLibrosView = Backbone.View.extend({
  el: '#ListaLibros',
  initialize: function() {
    this.collection = cursoCollection;

    _.bindAll(this, 'render');

    this.render();
  },
  render: function() {
    console.log("funcion render");
    var listaLibrosLi = '';

    this.collection.each(function(cursoModelo) {
      $(this.el).append('idCurso->', cursoModelo.get('idCurso'), ' titulo-> ', cursoModelo.get('titulo'));
      $(this.el).append('hola caracola');
    });
  }
});