动态更改挖空组件的模板

时间:2017-06-14 08:15:04

标签: javascript templates knockout.js

我使用Knockout JS v3.4.0和RequireJS v2.3.2。

我按照指定here将组件注册为单个AMD模块。

现在碰巧,我有一个组件可以有多个模板并基于特定条件的情况,我返回一个特定的模板。它完美无缺。

例如,

ko.components.register('my-component', { require: 'some/module' });

以上注册组件如下,

define(['knockout'], function(ko) {
    function MyComponentViewModel(params) {
        // some code here
    }

    return {
        viewModel: MyComponentViewModel,
        template: condition ? '<div> Some template </div>' : '<div> A whole another template </div>'
    };
});

现在我遇到了一个场景,当用户在应用程序中前进时,该情况可能会改变为用户输入。

要模拟这一点,请考虑,

define(['knockout'], function(ko) {
        function MyComponentViewModel(params) {
            // some code here
        }
       condition = true;
       setInterval(function(){
             condition = false;
           }, 1500);
        return {
            viewModel: MyComponentViewModel,
            template: condition ? '<div> Some template </div>' : '<div> A whole another template </div>'
        };
    });

如何在组件绑定到DOM后更改组件的模板?

更重要的是,我可以在不卸载和取消注册组件的情况下更改模板吗?

0 个答案:

没有答案