ASP.NET MVC使用Knockout获取数组元素索引的2种方法
在遍历数组、集合的时候,通常要获取元素的索引,本篇体验使用Knockout获取索引的2种方法。
假设有这样的一个模型:
namespace UseIndex.Models
{
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
}在HomeController中,先模拟一个Student的集合,在投影出Name属性的集合,最后以Json返回给前台视图。
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using UseIndex.Models;
namespace UseIndex.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public JsonResult GetStudentNames()
{
var students = new List<Student>()
{
new Student(){Id = 1, Name = "小明"},
new Student(){Id = 2, Name = "啸天"}
};
var names = from student in students
select new {student.Name};
return Json(names, JsonRequestBehavior.AllowGet);
}
}
}在Home/Index.cshtml中:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/knockout-2.2.0.js"></script>
<script type="text/javascript">
$(function() {
var vm = new ViewModel();
ko.applyBindings(vm);
vm.init();
});
function ViewModel() {
var self = this;
self.items = ko.observableArray([]);
self.showItemIndex = function(item, event) {
var context = ko.contextFor(event.target); //获取绑定元素的上下文;event.target绑定View Model的DOM元素
var index = context.$index();
alert("当前索引是:" + index);
};
self.init = function() {
$.getJSON('@Url.Action("GetStudentNames","Home")', function(data) {
var arr = [];
for (var i = 0; i < data.length; i++) {
arr[i] = data[i].Name;
}
self.items(arr);
});
};
}
</script>
<style type="text/css">
//样式略
</style>
</head>
<body>
<div>
<table>
<thead>
<tr>
<th>索引</th>
<th>编号</th>
<th>名称</th>
<th>在View Model中的索引</th>
</tr>
</thead>
<tbody data-bind="foreach: items">
<tr>
<td data-bind="text: $index"></td>
<td data-bind="text: $index() + 1"></td>
<td data-bind="text: $data"></td>
<td><a href="#" rel="external nofollow" data-bind="click: $root.showItemIndex">点击显示索引</a></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>以上,$data是指当前集合元素。$root是指根context中的ViewModel。
运行:

总结
获取集合或数组元素的索引有2种方式:
1、通过data-bind="text: $index"或data-bind="text: $index() + 1"
2、在View Model中通过方法来获得:先获取到上下文,再context.$index()
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
相关文章
Web.Config文件配置之限制上传文件大小和时间的属性配置
在Web.Config文件中配置限制上传文件大小与时间字符串时,是在httpRuntime httpRuntime节中完成的,需要设置以下2个属性:maxRequestLength属性与ExecutionTimeout属性,感兴趣的朋友可以了解下,或许对你有所帮助2013-02-02
Asp.net MVC SignalR来做实时Web聊天实例代码
本篇文章主要介绍了Asp.net SignalR来做实时Web聊天实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06
asp.net DbProviderFactory的使用-示例
NET 2.0有一个抽象工厂模式的典型应用:通过DBProviderFactory 可以对不同数据库进行操作。2009-11-11
Asp.Net Core 使用Monaco Editor 实现代码编辑器功能
在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等。这篇文章主要介绍了Asp.Net Core 使用Monaco Editor 实现代码编辑器功能,需要的朋友可以参考下2022-01-01
asp.net gridview实现全选,反选与删除记录的操作代码
asp.net gridview实现全选,反选与删除记录的操作代码,需要的朋友可以参考下。2011-07-07


最新评论