0

我有一个关于将引导组合框插件与淘汰赛(和 mvc)结合使用的问题。

我有一种情况,我在模板中使用了开箱即用的 MVC html 帮助程序,例如 Dropdownlisfor、textboxfor 等。我正在使用 Knockout 将数据集合绑定到模板。mvc html 助手为 DropDownlistfor 助手创建一个“选择”控件。在我想在控件上调用我的引导插件之前,我需要渲染它,以便设置所有必要的验证属性等。我最初使用 afterrender 并在该方法中,我找到了“选择”控件并在其上调用插件。

我们的问题是,我们不想每次在其他地方以类似的方式使用引导组合框控件时都这样做。所以,我一直在研究自定义绑定(我应该首先完成)并且有一个关于如何在我的状态中使用自定义绑定的问题。

我找到了这篇文章,他在其中为引导预输入控件创建了一个自定义绑定。我可以为组合框制作一个类似的。但我只能在控件呈现后调用它。那么,有没有办法让我们指定 KO 只执行自定义绑定“afterrender”而不是立即执行。这样,选择控件被呈现,然后我可以在选择控件上调用自定义绑定中的插件。

这是更多信息。

我有一个使用模板的表

<table>
        <tbody data-bind='template: {name: "editorRowTemplate", foreach: rules, afterRender: function(data) {{$root.view.templateRendered(data) } }'>   </tbody>
</table>

我有与此类似的模板

<script id="editorRowTemplate" type="text/html">

    <tr class="dataRow" data-bind="attr: { id: 'EditorRow' + $index() }">
        <td>
            <div class="editor-field">
                @Html.KnockOutDropDownListFor(rule => ruleTemplate.ReserveWordId, new List<SelectListItem>(), null,
                                                   new { @class = "combobox", data_bind = "options: $root.ReserveWords, optionsText:'Name', optionsValue:'ReserveWordId', attr : {id: $index(), name: $index()}" }, ((int)this.Model.Prefix).ToString())

                @Html.KnockOutValidationMessageFor(rule => ruleTemplate.ReserveWordId, "*", new { data_bind = "attr : { 'data-valmsg-for': $index()}" }, ((int)this.Model.Prefix).ToString())
            </div>
        </td>
    </tr>
</script>

我有自己的 html 助手(KnockoutDropDownListFor 等),它们生成一个带有指定 KO 绑定的选择控件。

请建议什么是解决它的好方法。如果您需要更多信息,请告诉我。

4

1 回答 1

0

我不确定我是否完全理解这个问题。但是,您无需担心等待 MVC 助手渲染,因为这将发生在服务器端,而淘汰赛将发生在客户端。

您也可以使用 $(document).ready(function() {...}); 如果你想在做任何事情之前确保 DOM 已经加载。

于 2012-11-28T19:57:51.673 回答