Knockout.js按钮仅在observableArray的最大索引上可见
Knockout.js button only visible on maximum index of observableArray
我有一个表,我想在最后一行显示一个按钮,但只在最后一行显示。下面的代码用于显示和隐藏按钮,但它显示在每行上。
如何只在最后一行显示呢?
Viewmodel:
var loadCustomFileName = function () {
for (i = 0; i < self.GetCanSeam().length; i++) {
var obj = {
appendFileName: parseFileName(i),
displayFileName: parseDisplayName(i)
if (i == self.GetCanSeam().length - 1) {
self.isMax(true);
}
};
self.GetCustomFile.push(obj);
}
};
视图:
<div class="csFormField" data-bind="visible: GetCustomFile().length > 0">
<table style="width: 100%;">
<thead>
<tr>
<th>File Name Template</th>
<th>File Name Append</th>
</tr>
</thead>
<tbody data-bind='foreach: GetCustomFile()'>
<tr>
<td><p class="cs-label"><label data-bind="text: displayFileName" /></p></td>
<td><p><input class="cs-input" data-bind="textInput: appendFileName" />
<button class="addFormat" data-bind="visible: isMax">+</button></p></td>
</tr>
</tbody>
</table>
</div>
我认为你的isMax是在父上下文上初始化的。不妨试试这个
var obj = {
appendFileName: parseFileName(i),
displayFileName: parseDisplayName(i)
};
obj.isMax = ko.observable(i==(self.GetCanSeam().length - 1));
self.GetCustomFile.push(obj);
您可以比较forloop
的index
。如果它到达最后一个元素,那么按钮就可见了。
例如:https://jsfiddle.net/kyr6w2x3/12/
self.ArrayLength = ko.observable()
self.ArrayLength(self.GetCustomFile().length);
HTML:
<button class="addFormat" data-bind="visible: $index() == $parent.ArrayLength() -1">+</button></p></td>
相关文章:
- 按索引迭代数组时,单击提交按钮Ruby on Rails
- 在JavaScript中更改下拉列表索引后,ASP.Net提交按钮单击事件不起作用
- 如何通过单元格索引访问表中的按钮
- 无法获取页面上单选按钮的值或索引.[Javascript]
- 如何在任何索引字段中验证 ng-repeat 中的保存按钮
- 按钮悬停效果在不同的 Z 索引上
- 浏览器后退按钮指向索引页
- 想要上传和解析 json 文本,并通过使用 ajax 单击按钮将其加载到我的索引页
- JQUERY 按钮返回到索引元素
- 如何使用 javascript 获取无序列表中单选按钮的选定索引和值
- z索引可以用于图片前面的按钮吗?
- 通过单击按钮覆盖 z 索引
- 返回到索引.html从图像.html通过使用PhoneGap Android中的“手机后退”按钮
- 单击按钮后,下拉列表中选定的索引颜色必须保持不变
- DHTML-单击按钮的索引
- 单选按钮选择索引更改,当添加icheck.js脚本引用时不触发
- Javascript不会在单选按钮列表索引更改时调用
- 如何在列表框中获得选定项目的索引,并添加到列表框两个按钮
- 值'i'从0开始为每个按钮在表中,但我需要行按钮onclick从一个特定的索引开始
- 下拉菜单 - asp.net 检测下拉列表.选定索引按钮单击后更改(禁用 JS)