Durandal/Knockout Template Binding Not Inserting

2019-06-22 05:47发布

I am currently trying to propagate a table row <tr> template into a <tbody> tag. Here is an example:

HTML:

<table>
    <tbody data-bind="template: { name : 'tableTemplate', foreach : tableRow }">
    </tbody>
</table>
<script type="text/html" id="tableTemplate">
    <tr>
        <!-- First Name -->
        <td data-bind="text: firstName"></td>
        <!-- Last Name -->
        <td data-bind="text: lastName"></td>
    </tr>                        
</script>

DurandalJS:

define(function(require) {
    var self = this;
    self.app = require('durandal/app');

    return {
       tableRow: ko.observableArray([
           { firstName: "DemoFirstName" , lastName: "ExampleLastName" },
           { firstName: "ExampleFirstName", lastName: "DemoLastName" }
       ]);

    //viewAttached and other non-applicable console log functions here
    };
});

Everything in the HTML will properly data-bind until it hits the table; all data-binds afterwards become dead.

I am rather new to Durandal, and am learning as I go.

4条回答
\"骚年 ilove
2楼-- · 2019-06-22 05:58

I ran into the same problem, and I dug up the answer on the Durandal google group. I posted the results here on my question. KO cannot find template with ID

Basically you can't use named/ID'd Knockout templates yet, they're not supported. Support may come soon, according to the Durandal devs on their newsgroup. The workaround is to use either inline, or Durandal's compose functionality.

查看更多
叼着烟拽天下
3楼-- · 2019-06-22 06:04

KO Templates do not seem to work well with Durandal - use View Composition instead (The creator of Durandal posts about it here) -https://github.com/BlueSpire/Durandal/pull/50

Some more blurb here: KO cannot find template with ID

查看更多
爷的心禁止访问
4楼-- · 2019-06-22 06:11

You should try compose of durandal. Document here.

查看更多
虎瘦雄心在
5楼-- · 2019-06-22 06:15

Might want to try this instead of the template approach:

<table>
  <tbody data-bind="foreach: tableRow">
    <tr>
      <!-- First Name -->
      <td data-bind="text: firstName"></td>
      <!-- Last Name -->
      <td data-bind="text: lastName"></td>
    </tr>                        
  </tbody>
</table>
查看更多
登录 后发表回答