如何绑定多个具有相同敲除功能、传递不同ID的链接
How to bind multiple links with same knockout function passing different IDs
问题:我是KnockoutJS的新手。下面的示例代码适用于我。但是您可以看到fetch函数是硬编码的,并且只适用于id=100的用户。如何为html表列表中的每一行创建Get链接,并将该记录的id传递给fetch函数,该函数仅在控制台中显示该特定行的记录。有什么想法吗?
HTML:
<div id="users-view-data">
<button type="button" data-bind="click: fetch">Get</button>
<button type="button" data-bind="click: remove">Delete</button>
<button type="button" data-bind="click: listAll">Get All</button>
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>Code</th>
<th>Created</th>
<th>Action</th>
</tr>
<tbody data-bind="foreach: collection">
<tr>
<td><span data-bind="text: id"></span></td>
<td><span data-bind="text: name"></span></td>
<td><span data-bind="text: code"></span></td>
<td><span data-bind="text: created"></span></td>
<td>Get Link will come here to call fetch funtion</td>
</tr>
</tbody>
</table>
</div>
JS:
<script type="text/javascript">
(function() {
'use strict';
var UserViewModel = function() {
this.service = ko.rest.service('http://domain/users');
this.model = ko.observable( { id:0, name:'', code:'' } );
this.collection = ko.observableArray([]);
};
UserViewModel.prototype.listAll = function() {
var self = this;
self.service.query(function(data) {
self.collection(data);
});
};
UserViewModel.prototype.fetch = function() {
var self = this;
self.service.load(100, function(data) {
self.model(data);
console.log(data);
});
};
UserViewModel.prototype.remove = function() {
var self = this;
var code = ko.rest.get(self.model(), 'id');
self.service.delete(code, function(data) {
console.log(data);
});
};
ko.applyBindings( new UserViewModel(), document.getElementById("users-view-data") );
})();
</script>
我正在使用以下库:
- 敲除3.3.0.js
- knockout.mapping-latest.js
- knock-out-rest.min.js
如果我正确理解您想要的内容,您需要将100
替换为对当前ID的引用,如下所示:
UserViewModel.prototype.fetch = function() {
var self = this;
self.service.load(self.model().id, function(data) {
self.model(data);
console.log(data);
});
};
为每行添加一个点击处理程序:
<tr data-bind="click:function(){$root.fetch(id)}">
<td><span data-bind="text: id"></span></td>
<td><span data-bind="text: name"></span></td>
</tr>
修改您的提取函数以获取id:
UserViewModel.prototype.fetch = function(id) {
var self = this;
//do whatever with id
};
(简化)小提琴
相关文章:
- 如何绑定多个具有相同敲除功能、传递不同ID的链接
- 功能点击使打开新链接,不转到原始链接
- 修复Javascript代码以将文本中的所有Youtube链接转换为Youtube ID功能
- 如何在用户提交链接时添加提取推文并将其发布到站点的功能
- 具有双重功能的按钮:在_blank窗口中打开一个链接,再加上_self中的另一个链接
- 通过模糊功能传递链接,而不是单击另一个链接
- AngularJS:在指令's链接功能
- 如何在链接上附加onclick事件以使用javascript功能
- 在链接中禁用window onbeforenload功能
- 如何使用Foundaton 6更改小屏幕上顶级链接的功能
- DOM在指令中未就绪's链接功能.hacky Timeout是唯一的解决方案吗
- 如何禁用滚动但保留使用锚链接滚动的功能
- 是的,没有带有链接的JavaScript删除功能的选项
- 链接功能中的角度单元测试$attrs
- 链接的按钮按住功能
- 当用户单击滚动页面的锚链接时,是否可以禁用 .scroll 功能
- 附加链接上的单击功能不起作用
- jQuery:使用 var 快捷方式分配数据以及如何链接功能以在加载和单击时运行
- onClick功能链接不工作
- NodeJS mongo - 参考唯一生成的点击功能链接