0

我正在使用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

4 回答 4

2

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

需要是:

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

于 2013-07-04T11:15:10.413 回答
0

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

简单地做

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

Backbone 和 marionette 做到了,因此您不必在 Dom 中存储数据。你有一个模型。

尽管

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

会工作。与backbone.js 一起使用是一种不好的模式

于 2013-07-04T16:39:25.600 回答
0

我最好给链接一个ID,或者一个类,然后使用jquery的数据方法

于 2013-07-04T06:50:20.927 回答
0

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

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

你可以在这里看到一个例子serializeDatahttps ://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-serializeddata

于 2013-07-04T09:46:13.183 回答