通过使用以下文章: http://www.dotnetcurry.com/ShowArticle.aspx?ID=847,我尝试开发示例应用程序。为了保持独立,我试图将javascript代码移动到一个单独的js文件:EmployeeInfo.js并在Create.cshtml的head部分中引用了js文件,如下所述:
<head>
<script src="~/Scripts/EmployeeInfo.js"></script>
</head>
但我无法显示数据库中的现有记录。在调试代码时,我发现调用了 GetEmployees() 方法并且 data.length 也大于 0,但数据无法与表绑定以显示所有记录。对此的任何帮助不胜感激。
<tbody data-bind="foreach: Employees">
<tr style="border: solid" data-bind="click: $root.getselectedemployee" id="updtr">
<td><span data-bind="text: EmpNo"></span></td>
<td><span data-bind="text: EmpName"></span></td>
<td><span data-bind="text: Salary"></span></td>
<td><span data-bind="text: DeptName"></span></td>
<td><span data-bind="text: Designation"></span></td>
<td>
<button data-bind="click: $root.deleterec">Delete</button></td>
</tr>
</tbody>
谁能帮我理解这个问题。
谢谢和问候,桑托什·库马尔·帕特罗
在没有看到工作代码的情况下,我唯一的猜测是您在页面呈现之前应用绑定。 注意步骤 8 的说明:
您已第 8 步:在关闭正文标签之前,定义块,其中 视图模型将定义如下:
将代码移动到一个单独的文件中,这很好,但您已将其移动到 head 标签中。 DOM 操作顺序将在<body>
有机会渲染之前加载并执行此脚本,因此 ko.applyBindings 不会绑定到任何内容。 您有两种选择。
将脚本声明移动到结束正文标记之前:
<script src="~/Scripts/EmployeeInfo.js"></script>
</body>
或者,假设你使用的是jQuery,将你的脚本代码包装在这个文件中的文档就绪函数中:
$(function (){
// ... Your code ...
});