如何使用knockout.js afterRender

时间:2017-06-19 22:42:54

标签: javascript ajax knockout.js

我已经在knockout.js中阅读了afterRender的文档,但我很困惑如何在我的情况下应用它。

<form id="shortlistForm" data-bind="style: { display: !koIsShortlisted() ? 'inline-block' : 'none'}, attr: {action: '@(MVC.GetLocalUrl(MVC.HireOrgJobApplication.ViewApplication(Model.CurrentOrganization.CustomUrl, Model.Job.JobKey, "xxx/ajax-shortlist")))'.replace('xxx', application.applicationKey)}" method="post" style="display:inline;">
    @Html.AntiForgeryToken()
        <input type="hidden" name="ApplicationKey" data-bind="attr:{ value : application.applicationKey }" />
            <button type="submit" class="btn-act jui-tooltip" title="Shortlist">
                <i class="fa fa-2x fa-star"></i>
            </button>
</form>  

我有这个表格,列出了一个应用程序。因为它仅在“koIsShorlisted”为假时显示,所以当我点击它时它会消失。

请注意,“koIsShortlisted”位于名为“filteredApplications”的viewModel中,此viewModel中有多个对象,如屏幕截图所示。

enter image description here

当我尝试仅为一个应用程序执行此操作时,它确实有效。

                    $('form#shortlistForm').ajaxForm(function () {
                        viewModel.filteredApplications()[0].koIsShortlisted(false);

                    });

我刚使用此函数将第一个对象的“koIsShortlisted”设为false。

但是由于viewModel中有多个应用程序(对象),我想使用foreach,afterRender使其适用于所有对象。

我如何使用foreach,afterRender以及如何编写一个内部函数(afterRender)为每个对象调用filteredApplication.koIsShortlisted(false)?

帮助!

0 个答案:

没有答案