在页面编写完成后是否可以注入Durandal小部件?

时间:2014-09-17 14:56:15

标签: javascript durandal

我正在开发一个durandal应用程序,根据某些操作,我需要使用<!-- ko widget: {kind:'widget/cards'} --><!-- /ko -->注入一个小部件

目前未显示窗口小部件,但只能在HTML内容中看到注释。 有帮助吗? 感谢

1 个答案:

答案 0 :(得分:1)

是。在窗口小部件绑定的直接父节点上使用ifvisible绑定。如果没有直接父节点,则仅为了保持ifvisible绑定而创建一个。

从DatePicker Widget中获取此代码我使用 Durandal为 Durandal 编写(您可以看到视频here):

<div>
    <div data-bind="visible: viewMode() === 'month'">
        <div data-bind="compose: {model: 'widgets/_common/datetime/datepickerMonth', view: 'widgets/_common/datetime/datepickerMonth', activate: true, activationData: messageChannel }"></div>
    </div>
    <div data-bind="visible: viewMode() === 'months'">
        <div data-bind="compose: {model: 'widgets/_common/datetime/datepickerMonths', view: 'widgets/_common/datetime/datepickerMonths', activate: true, activationData: messageChannel }"></div>
    </div>
    <div data-bind="visible: viewMode() === 'years'">
        <div data-bind="compose: {model: 'widgets/_common/datetime/datepickerYears', view: 'widgets/_common/datetime/datepickerYears', activate: true, activationData: messageChannel }"></div>
    </div>
</div>

请注意,我是根据条​​件动态注入要显示的日历视图。顺便说一下,这是创建多视图小部件的一个技巧(而不是必须编写自定义视图定位器,这可能会变得复杂)。

当您动态注入小部件时,原则是相同的(与组合相反,正如我在这里所做的那样)。

在这种情况下,我使用visible绑定来提高速度。每次用户在视图之间切换时,我都不想重新创建合成。用户希望日期选择器的性能更高。