knockout.js - 使用 Knockout.js 访问 Javascript Html 模板并绑定(bind)数据

标签 knockout.js

如何访问在我的网站中重复使用的 javascript 模板,并在 javascript 中执行此操作并将对象绑定(bind)到它。我希望以字符串形式访问模板,以便可以将其添加到 Google map 信息窗口下方的内容属性中。

我知道有这个函数 ko.renderTemplate("myTemplate", accessor, {}, element, 'replaceNode'); 但我怎样才能让它返回要拍摄到的字符串信息窗口?

<script type="text/html" id="info-window-test">

   <span data-bind="text: Name"></span>

</script>

   var html = TODO: Get Template With Data

  /***************** OLD WAY
    var html = '<div class="info-window">';

        html = html + '<div><b>' + location.City + ', ' + location.StateRegion + '</b></div><hr/>';

        length = location.Events.length;

        $.each(location.Events, function (index, item) {
            html = html + '<div><a target="_blank" href="' + item.Link + '">' + item.Name + '</a></div>';
            html = html + '<div><i>' + item.DateFormatted + '</i></div>';

            if (index < length - 1) {
                html = html + '<hr/>';
            }
        });

        html = html + '</div>';
    **************************/

    var infoWindow = new google.maps.InfoWindow({
       content: html
    });

最佳答案

如果我正确理解了你的问题,它应该是“我可以使用 KnockoutJS 作为简单的模板引擎吗?”,简单的答案是不,你不能

但是你可以暂时使用 DOM 来实现你想要的。

检查这个jsfiddle http://jsfiddle.net/angelyordanov/zQZT8/ .

<script type="text/html" id="info-window-test">  
  <span data-bind="text: Name"></span>  
</script>  
var viewModel = { Name: 'John' };

var templatePlaceholder = 
  $('<div style="display: none" data-bind="template: { name: \'info-window-test\' }"></div>')
  .appendTo('body');

ko.applyBindings(viewModel, templatePlaceholder[0]);

var resultHtml = templatePlaceholder.html();

ko.cleanNode(templatePlaceholder[0]);
templatePlaceholder.remove();

alert(resultHtml);

关于knockout.js - 使用 Knockout.js 访问 Javascript Html 模板并绑定(bind)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14597154/

相关文章:

javascript - 是否有使用扩展器的 knockout.js 的屏蔽输入插件?

javascript - 有什么方法可以跟踪 UI 中显示的 Knockout Observable Array 项目吗?

javascript - 在 knockout.js 中绑定(bind)多个下拉列表

javascript - ObservableArray 抛出 undefined 不是 Knockoutjs 中的函数

javascript - 如何更改knockout.js中数组的值?

javascript - 遍历数组以将 ko.computed 添加到每个对象

css - 在 knockout validation 错误或成功时添加或删除元素

javascript - 使用 KnockoutJS 的项目选择 MVC View

Javascript MVC - 轻量级?

knockout.js - 如何使用knockout mapping插件?