0

我正在使用 Knockout-Kendo.js 将 Kendo 小部件绑定到 Knockout observables。我有一个 KendoListView,它根据名为“Filters”的可观察对象从 html 模板中填充自身。我遇到的问题是我在模板中使用的输入控件没有转换为 Kendo 小部件,即使我将其指定为 kendoComboBox。(为简单起见,我省略了 dataSource 等的属性)

其他需要注意的事项。

  • 在页面加载时,模型中的 Filters 可观察属性中没有对象。

  • ko.ApplyBindings(Model) 在 Document ready 函数中调用。

  • 用户在页面上进行各种选择,然后填充
    模型中的可观察过滤器。

  • 添加过滤器时,控件确实显示在 DOM 中,但作为本机 Html 控件。

var Model = {

    Filters: ko.observable([]),

    FilterItemTemplate: function () {
        return kendo.template($("#FilterItemTemplate").html())
    }

}

<div id="Filters" data-bind="kendoListView: { data: Filters, template: FilterItemTemplate()}" ></div>


<script type="text/html" id="FilterItemTemplate">
        <div>
            <h4>#=ControlLabel#</h4>         
            <input id="#=ControlID#" name="FilterControl" data-bind="kendoComboBox: {}" /> 
        </div>
 </script>

4

1 回答 1

0

我最终要做的是

  1. 从过滤器 div 中删除了 ListView。
  2. 由于 ListView 现在已被删除,我使用我的 javascript 代码订阅了我的模型中可观察到的过滤器。因此,每当从 Filters observable 中加载或删除某些内容时,都会调用函数侦听器。
  3. 在侦听器函数中手动创建了 Kendo 小部件并附加到 Filters div。
于 2020-04-17T23:25:14.480 回答