Может ли knockout.js использовать шаблоны для создания шаблонов? - PullRequest
2 голосов
/ 19 июня 2011

Я пытаюсь использовать шаблон для создания шаблонов.

По линиям

Html:

<script id="searchField-template" type="text/html">
    <li data-bind="text: name"></li>
</script>

<script id="template-template"  type="text/html">
    <ul data-bind="template: { name: 'searchField-template', foreach: ${name} }" ></ul>
</script>    

JS:

var viewModel = {
    Title: [{
        name: "Title1"},
    {
        name: "Title2"},
    {
        name: "Title3"}],
    Manager: [{
        name: "Manager1"},
    {
        name: "Manager2"},
    {
        name: "Manager3"}],

    Defn: [{
        name: "Title"},
    {
        name: "Manager"}]

};

ko.applyBindings(viewModel);

готовый образец здесь: http://jsfiddle.net/scottwww/yQZUE/2/

Кажется, проблема в том, как интерпретируются фигурные скобки.

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 19 июня 2011

Не уверен, что это правильный путь, но ссылка на vm помогает.

http://jsfiddle.net/scottwww/vwP3w/1/

HTML:

<div data-bind="template: { name: 'template-template', foreach: Defn }"></div>

<script id="searchField-template" type="text/html">
    <li data-bind="text: name"></li>
</script>

<script id="template-template"  type="text/html">
    <ul data-bind="template: { name: 'searchField-template', foreach: vm[$data.name] }" ></ul>
</script>    

JS:

var viewModel = {
    Title: [{
        name: "Title1"},
    {
        name: "Title2"},
    {
        name: "Title3"}],
    Manager: [{
        name: "Manager1"},
    {
        name: "Manager2"},
    {
        name: "Manager3"}],

    Defn: [{
        name: "Title"},
    {
        name: "Manager"}]

};
window.vm = viewModel;
ko.applyBindings(viewModel);
2 голосов
/ 20 июня 2011

Вот, пожалуйста,>> 1001 *

http://jsfiddle.net/vwP3w/2/

0 голосов
/ 19 июня 2011

используйте переменную $data внутри вложенного шаблона.

http://jsfiddle.net/dwick/yQZUE/3/

...