【发布时间】:2012-11-23 17:56:20
【问题描述】:
我刚刚开始学习 KnockoutJS,所以我可能遗漏了一些简单的东西,但这是我的问题。
下面是我的 ClassType 类
public class ClassType
{
[HiddenInput(DisplayValue = false)]
public int ID { get; set; }
[Required(ErrorMessage = "Please enter a description")]
public string Description { get; set; }
[Display(Name = "Class Slots")]
public int ClassSlots { get; set; }
}
我的控制器中有一个方法可以返回所有设置的类型的列表,称为 GetAll
public JsonResult GetAll()
{
var classtypes = classtypeRepository.All;
return Json(classtypes, JsonRequestBehavior.AllowGet);
}
在我看来,我有以下代码可以将数据加载到我的视图模型中
<script type="text/javascript">
$(document).ready(function () {
$.get("/ClassTypes/GetAll/", "", function (data) {
var viewModel = {
classtypes: ko.observableArray()
};
viewModel.classtypes = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
});
});
</script>
我已将以下 div 放入我的视图中以确保返回某些内容
<div data-bind="text: ko.toJSON($data)"></div>
返回如下
{"classtypes":[{"ID":1,"Description":"Online","ClassSlots":30},{"ID":2,"Description":"In-House","ClassSlots":15},{"ID":3,"Description":"Hands-On","ClassSlots":10}]}
如果我尝试将任何东西绑定到视图模型,它似乎不理解属性
<tbody>
<!-- ko.foreach: classtypes -->
<tr>
<td></td>
<td data-bind="text: Description">
</td>
<td data-bind="text: ClassSlots">
</td>
</tr>
<!-- /ko -->
</tbody>
我使用了 knockoutJS 映射插件来带来我认为可以为我创建视图模型结构的数据。我错过了什么?
【问题讨论】:
-
请尝试执行以下操作:
<td data-bind="text: $data.Description"> -
这对我不起作用。我得到相同的结果
-
好的,我找到了解决方案,但也许有人可以告诉他们为什么这样做。我正在使用淘汰赛 2.2.0,我认为它支持控制流模板,但这似乎是问题所在。如果我使用 otu cmets 并在 tbody 标签上放置 数据会显示我已经更新了我的答案,应该可以回答你关于 foreach 评论的最后一个问题如果你因为你的父属性未定义而来到这里,破坏你的绑定,see my answer here(抱歉通知,OP!)
标签: knockout.js knockout-mapping-plugin knockout-2.0