我正在使用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"));
}
我在这里犯的错误是什么?请指导我解决这个问题。
答案 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
答案 3 :(得分:0)
您正在使用牵线木偶项目视图。您不需要从Dom中撤回数据。
简单地做
var userid = this.model.get("userid");
Backbone和marionette使它不必在Dom中存储数据。你有一个模型。
虽然
var userid = $(e.currentTarget).data("id");
会工作吗?与backbone.js
一起使用是一种糟糕的模式