【问题标题】:Not able to bind the records using knockout无法使用淘汰赛绑定记录
【发布时间】:2013-09-15 04:07:54
【问题描述】:

通过使用以下文章: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>

谁能帮我理解这个问题。

感谢和问候, 桑托什库马尔帕特罗

【问题讨论】:

    标签: asp.net-mvc-4 knockout.js


    【解决方案1】:

    没有看到工作代码,我唯一的猜测是您在页面呈现之前应用绑定。注意第 8 步的说明:

    第 8 步:在关闭 body 标签之前定义块所在的块 ViewModel 将定义如下:

    您已将代码移至单独的文件中,这很好,但您已将其移至 head 标记中。 DOM 操作顺序将在 &lt;body&gt; 有机会呈现之前加载并执行此脚本,因此 ko.applyBindings 绑定到任何内容。你有两个选择。

    要么将你的脚本声明移动到结束正文标记之前:

        <script src="~/Scripts/EmployeeInfo.js"></script>
    </body>
    

    或者,假设您使用的是 jQuery,请将您的脚本代码包装在该文件中的文档就绪函数内:

    $(function (){
        // ... Your code ...
    });
    

    【讨论】:

    • 非常感谢。您的建议对我理解问题有很大帮助。
    猜你喜欢
    • 2013-01-01
    • 2014-09-14
    • 2014-11-29
    • 2016-01-22
    • 2015-03-23
    • 1970-01-01
    • 2013-02-04
    • 2014-05-29
    相关资源
    最近更新 更多