淘汰赛后没有执行

时间:2014-07-10 17:40:45

标签: knockout.js

我使用ko.renderTemplate方法渲染模板。渲染模板后,我想显示我正在使用以下代码的谷歌图表:

return ko.renderTemplate("container-graph", config,
                         {
                             afterRender: function (renderedElement) {
                                              //code to display google charts
                                          }
                         });

下面是渲染的html。我想在第二个div中显示谷歌图表。

<div data-bind="attr: { id: id }, with: graph">
     <div data-bind="attr: { id: chartID}"></div>
</div>

afterRender永远不会被解雇,因此不会显示任何图表。

除了afterRender之外,还有其他方法可以在呈现模板后显示图表吗?

1 个答案:

答案 0 :(得分:1)

你似乎把事情搞混了。

renderTemplate是一种方法,您可以调用该方法直接从代码呈现模板,而不是从模板绑定中呈现它们。它具有以下参数:

  1. 模板名称
  2. 要绑定到模板的ViewModel
  3. 配置选项
  4. 将模板放入哪个DOM元素
  5. 渲染模式(例如&#34; replaceNode&#34;)
  6. 您用来调用renderTemplate的参数根本没有意义。

    也许你可以试试这个:

    <div data-bind="attr: { id: id }, with: graph">
      <div data-bind="attr: { id: chartID}, template: { name: "myGraphTemplate",
                            data: $data,
                            afterRender: thingToDoAfterRendering }"></div>
    </div>
    
    <script id="myGraphTemplate" type="text/html">
      <!-- Template goes here -->
    </script>
    

    在viewmodel上显示:

    vm = {
      id: ko.observable(),
    
      graph: {
        chartId: ko.observable(),
        thingToDoAfterRendering: function(renderedElement) {
          // Code to display google charts
        }
      }
    
    }
    

    这个答案是关于你的代码和标记的结构有很多假设和猜测的。如果这不能回答您的问题,您需要填写大量遗漏信息,包括:

    1. 您的视图模型是什么样的?一定要包含调用renderTemplate的函数(或者是自定义绑定的一部分吗?)
    2. 您的模板是什么样的?
    3. 有关renderTemplate的更多信息,请参阅:

      另外请务必查看模板绑定文档:

相关问题