所以我将一个旧的Web表单应用程序转换为更加模块化,并使用knockout重写了该页面。既然我已经完成了所有工作,我想将我的淘汰视图模型导出到模块中,但是我遇到了内置模板系统无法渲染模板的问题。
e.g。
<script type="text/javascript">
var MyPage = (function($, ko) {
var my = {};
my.Message = function(message) {
var self = this;
self.messageId = message.messageId;
self.messageText = message.messageText;
};
my.MessageViewModel = function() {
var self = this;
self.messageArray = ko.observableArray([]);
self.getMessageArray = function() {
$.ajax({
//get message array
success: function() {
//map message array and push new my.Message into messageArray
}
});
};
};
return my;
}) (jQuery, ko);
$(document).ready(function () {
ko.applyBindings(new MyPage.MessageViewModel());
});
</script>
<script type="text/html" id="messageTemplate">
<tr>
<td data-bind="text: messageId"></td>
<td data-bind="text: messageText"></td>
</tr>
</script>
//exert from html
<table>
<thead>
<tr>
<th>Message Id</th>
<th>Message Text</th>
</tr>
</thead>
<tbody data-bind="template: {name: 'messageTemplate', foreach: messageArray}">
</tbody>
</table>
答案 0 :(得分:0)
需要引用模板的名称,如:
<tbody data-bind="template: {name: 'messageTemplate', foreach: messageArray}">
</tbody>
否则,它会尝试将messageTemplate
评估为变量,以确定要使用的模板名称。