【发布时间】:2013-12-12 08:57:55
【问题描述】:
我有一个 viewModel,它包含一个可观察的 folder 对象(初始化时未定义)
我有一个 foreach 模板,它应该显示文件夹的文件,但它不起作用。
HTML
<div data-bind="template: { if: currentFolder(), foreach: currentFolder.files }">
<div style="padding: 10px; border: 1px solid #000; background-color: #f0f0f0">
<span data-bind="text: $data"></span>
</div>
</div>
<button type="button" id="button">Set current folder</button>
Javascript
var viewModel = {
currentFolder: ko.observable()
};
ko.applyBindings(viewModel);
document.getElementById('button').onclick = addCurrentFolder;
function addCurrentFolder() {
var folder = {
files: [ "File 1", "File 2", "File 3" ]
};
viewModel.currentFolder(folder);
// does nothing
console.log(viewModel.currentFolder());
};
【问题讨论】:
-
尝试在 foreach
foreach: currentFolder().files中执行你的 currentFolder observable -
是的,这行得通。但是,我需要用一个空对象初始化 currentFolder,否则我会得到一个错误:
currentFolder: ko.observable({})。添加您的评论作为答案以标记它
标签: javascript jquery knockout.js knockout-2.0