如何获取data-id值

时间:2013-07-04 06:44:57

标签: javascript jquery html5 marionette

我正在使用backbone.marionette.js并且我能够将值填充到表中,但是在尝试获取所选行的值时我遇到了问题。

以下是我的模板:

<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"));
}

我在这里犯的错误是什么?请指导我解决这个问题。

4 个答案:

答案 0 :(得分:2)

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

需要:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

默认情况下,模板中唯一可用的属性是在模型实例上定义的属性。似乎userid不属于模型,因此它将是未定义的。

您可以将属性附加到模型,或者(更清洁的方式)在视图中定义serializeData函数以丰富提供给视图的数据:提供具有所有木偶实​​例属性的对象,并添加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

答案 3 :(得分:0)

您正在使用牵线木偶项目视图。您不需要从Dom中撤回数据。

简单地做

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

Backbone和marionette使它不必在Dom中存储数据。你有一个模型。

虽然

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

会工作吗?与backbone.js

一起使用是一种糟糕的模式