我通过Knockout调用以下模板:
<script type="text/html" id="uploaded-files-template">
<li data-bind="text: original_name"></li>
<pre data-bind="text: ko.toJSON($parent, null, 2)"></pre>
</script>
在foreach循环中被调用:
<ul class="files-list" data-bind="template: { name: 'uploaded-files-template', foreach: uploadedFiles, as: 'uploadedFile' }"></ul>
我尝试从我的模板访问$parent
绑定上下文,但我被告知它是undefined
,当我尝试输出JSON格式时(正如我上面所做的那样),它是空的。
$uploadedFiles
是ko.observableArray()
:
self.uploadedFiles = ko.observableArray([]);
通过AJAX填充的内容如下:
然后继续推进:
$.each(message.objects, function(index, object) {
self.uploadedFiles.push(object);
});
如果我用$parent
替换$data
,我可以看到正在输出的当前迭代。知道为什么这个$parent
没有显示任何内容吗?
答案 0 :(得分:2)
您的模板和绑定没有任何问题,请参阅正常工作fiddle。
var SimpleListModel = function(items) {
this.uploadedFiles = ko.observableArray(items);
};
var model = new SimpleListModel([
{ original_name: "One" },
{ original_name: "Two" },
{ original_name: "Three" }]
)
ko.applyBindings(model);
在viewModel或viewModel填充中必须是错误的。
答案 1 :(得分:1)
呃...好吧,这很令人尴尬。我的$parent
上下文是空的,因为我没有实例化我的ViewModel。我这样做了:
$(document).ready(function() {
ko.applyBindings(uploadViewModel);
});
当我应该这样做时:
$(document).ready(function() {
ko.applyBindings(new uploadViewModel());
});
感谢Max Brodin&amp;然而,帮助的超级冷却。