如何添加/删除视图?

时间:2015-04-21 15:58:06

标签: javascript knockout.js

根据我对knockoutjs文档和其他材料的理解,通常的做法是Views(包括嵌套的那些)绑定到ViewModel'添加/删除'{{1通过切换显示和可见性等css属性来完成。

但是当意图实际添加/删除作为knockoutjs模板或组件的DOM元素时,常见/最佳实践是什么?

如何将HTML插入目标视图?如果它不是自动的,应如何执行重新绑定?

2 个答案:

答案 0 :(得分:2)

您可以使用“if”绑定,与“visible”不同,它实际上会添加/删除DOM中的元素。

http://knockoutjs.com/documentation/if-binding.html

答案 1 :(得分:0)

负责展示组件的“视图层”示例。

<强>模板

<!-- ko if: componentName -->
    <div data-bind="component: { name: componentName, params: componentParams }"></div>
<!-- /ko -->

查看模型

function LayerViewModel() {
    if (!(this instanceof LayerViewModel)) {
        return new LayerViewModel();
    }
    var self = this;
    this.componentName = ko.observable(null);
    this.componentParams = ko.observable(null);

    this.showView = function (componentName, componentParams) {
        self.componentName(componentName); 
        self.componentParams(componentParams || {});
    };
    this.dismissView = function () {
        self.componentName(null); 
        self.componentParams(null);
    };
}

您与此图层的沟通方式取决于您。我通常使用信号。