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
Backbone.js 如何查找所单击项对应的模型Id?_Backbone.js_Backbone Events - Fatal编程技术网

Backbone.js 如何查找所单击项对应的模型Id?

Backbone.js 如何查找所单击项对应的模型Id?,backbone.js,backbone-events,Backbone.js,Backbone Events,如何知道我单击的项目的Id?我的代码如下: $(函数(){ ipl.mvc.view.openings\u view=ipl.mvc.view.view\u base.extend({ 模板:'/assets/t/plmt/companys.tmpl.html', ID:“#tmpl_开口”, 活动:{ “单击#编辑”:“编辑帖子” }, 初始化:函数(){ var_this=这个; _.bindAll(这是'addOne','addAll','render','editpost'); _thi

如何知道我单击的项目的Id?我的代码如下:

$(函数(){
ipl.mvc.view.openings\u view=ipl.mvc.view.view\u base.extend({
模板:'/assets/t/plmt/companys.tmpl.html',
ID:“#tmpl_开口”,
活动:{
“单击#编辑”:“编辑帖子”
},
初始化:函数(){
var_this=这个;
_.bindAll(这是'addOne','addAll','render','editpost');
_this.loadTemplate(_this.template,function()){
_this.model=new ipl.mvc.model.companys_model([]);
_this.model.view=\u this;
_this.model.bind('change',\u this.render,\u this);
});
}
,
render:function(){
var_this=这个
jsonData=_this.model.toJSON();
_.每个(jsonData、功能(模型){
$(_this.ID).tmpl(model).appendTo(_this.el);
把这个还给你;
});
}
,
编辑:功能(e){
console.log(“单击编辑”);
e、 预防默认值();
变量ele=$(e.target);
控制台日志(ele);
_this.model=new ipl.mvc.collection.companys_collection([]);
var id=_this.model.get(“id”);
警报(id);
}
});
});
和模板

<a href="!/editpost/${id}" data-id="${id}"><button id="edit"  ><img   src="/assets/img/pencil.png" /></button></a>


我需要在编辑函数中使用id,但不能从模板中获取
${id}
,我按照这些步骤进行操作,但没有得到它?如何从模板中获取单击项的
${id}

实际上您需要的是:

  • 您已经在模板中的html元素上设置了数据id

  • 您添加了要在正确事件(editPost)上执行的方法

  • 在该editPost方法中,您可以执行以下操作:

    editPost: function(e){
      e.preventDefault();
      var id = $(e.currentTarget).data("id");
      var item = this.collection.get(id);
    }
    
  • 备注我注意到你的代码有太多的结束标记,所以它不会在这里运行, 我还注意到在你的编辑文章中,你尝试了这个,但你从未声明过。 你应该有
    var\u this=this在该方法中

    备注2我不明白为什么在本例中您甚至需要数据id, 呈现视图有两种方式,一种是视图绑定了集合,另一种是视图具有模型。将集合绑定到视图时,您可能需要从单击的元素中获取正确的id,以便在集合中找到正确的模型

    但是在您的示例中,您的视图绑定了一个模型,因此您只有1个ID,您可以通过调用
    this.model.get('ID')来获取该ID
    我相信上面的整个代码示例都是从另一个示例中复制的,他们在视图中使用了一个集合,因为您的渲染和数据id属性的使用都表明了这一点。

    这是另一种(较新版本的主干?)方法:(我看到@Sander在他的备注中显示了
    模型。get
    方法)


    请看一看你发布的代码,如果你问我它有太多的结束括号,我相信这是不正确的。请尝试重新格式化您的代码,使其看起来更吸引其他人尝试并找到解决方案
    var AppointmentView = Backbone.View.extend({
      events: {
        'click' : 'alertTitle'
      },
    
      alertTitle : function(e) {
        // this.model.get('id') is what you're looking for
        alert( this.model.get('title') );
      }
    });