2013-07-04 30 views
0

我正在使用backbone.marionette.js,我可以将值填充到表中,但是在尝试获取所选行的值时遇到问题。如何获取data-id值

以下是我的模板:

<td><%= firstName %></td> 
<td><%= lastName %></td> 
<td><%= designation %></td> 
<td> 
    <a href="#" data-id='<%= userid %>'> 
    <img src="assets/img/add.png" id="add-puppet-button" alt="Add Row" /> 
    </a> 
    <img src="assets/img/remove.png" id="remove-puppet-button" alt="Remove Row"/> 
</td> 

的数据是有在data-id。当我调试我看到它是undefined。我尝试按以下方式得到它:

accordianView : function(e){ 
    e.preventDefault(); 
    var userid = $(e.currentTarget).data("userid"); 
    var puppet = new PuppetModel(); 
    puppet = PuppetTable.puppetCollection.get(userid); 
    console.log("firstName : "+puppet.get("firstName")); 
    console.log("lastName : "+puppet.get("lastName")); 
    console.log("Designation : "+puppet.get("designation")); 
} 

我在这里做了什么错误?请指导我解决这个问题。

回答

0

我最好给链接一个ID或一个类,然后使用jQuery的data method

0

默认情况下,模板中可用的唯一属性是在您的模型实例上定义的属性。看起来userid不属于该模型,所以它将是未定义的。

您可以将属性附加到模型,或者(更简洁的方式)在您的视图中定义一个serializeData函数以丰富提供给视图的数据:为对象提供所有puppet实例属性,并添加userid

您可以在这里看到的serializeData一个例子:https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/common/views.js

相对于它的文档是在这里:https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.itemview.md#itemview-serializedata

2

var userid = $(e.currentTarget).data("userid");

需求是:

var userid = $(e.currentTarget).data("id");

0

你正在使用木偶项目视图。您不应该需要从Dom中取回数据。

根本就

var userid = this.model.get("userid");

骨干和木偶制作,所以你不必存储在DOM数据做。你有一个模型。

虽然

var userid = $(e.currentTarget).data("id");

会工作。这是一个不好的模式,使用backbone.js

+0

如果这是一个集合中的一个项目,你会怎么做? – Baz

+0

项目视图知道它们绑定的该集合中的特定模型。 – MarkKGreenway

+0

如果您渲染一个集合,然后在每个项目上放置一个click事件,那么在clickHandler中没有提及单个模型? – Baz