从可观察数组项属性值动态获取的knockout模板名称

时间:2015-01-07 01:12:39

标签: knockout.js

我是“淘汰赛”的新手,所以请耐心等待。 我有一个可观察的数组,由对象组成,其中一个属性(“模板类型”)包含要使用的模板的名称。如何在迭代HTML中的可观察数组时动态分配属性值(模板类型)?

//Short version of an array object (‘containerData’ is read from MVC)
function smContainerViewModel(containerData) {
            var self = this;
            self.id = ko.observable(containerData.id);                
            self.templateType = ko.observable(containerData.containerType);
        }; 
//viewModel
function AppViewModel(dataInput) {          
            var self = this;
            self.koContainersArray = ko.observableArray();
            for (var i = 0; i < dataInput.containersArray.length; i++) {
                self.koContainersArray.push(new smContainerViewModel(dataInput.containersArray[i]));
            };

            self.currentTemplate = ko.computed(function () {
//Currently I can return the below static name of a template. I would like to return: 
//  koContainersArray()[index]. templateType;
                 return 'template1';                  
            });               
     };  

     var viewModelSM = new AppViewModel(initialData);          
     ko.applyBindings(viewModelSM);

//HTML 
<div data-bind="template:{name:currentTemplate ,foreach:koContainersArray}"></div>

1 个答案:

答案 0 :(得分:1)

你几乎就在那里。

<!-- ko foreach: koContainersArray -->
<div data-bind="template: templateType"></div>
<!-- /ko -->

只要设置为templateType的是template1或模板的ID,就可以使用。

这是一个示例小提琴 -

http://jsfiddle.net/pwkad/eo4ft2z0/