我使用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后更改组件的模板?
更重要的是,我可以在不卸载和取消注册组件的情况下更改模板吗?