我正在使用淘汰赛绑定创建链接列表:
Javascript 和视图模型如下所示:
$(function () {
var adminViewModel = function()
{
var self = this;
self.leftItems = ko.observable([ { Name: "Item1", Id: 0 }]);
self.getChildren = function (id, list) {
var url ="@Url.Content("~/api/Test/GetChildren/")" + id;
$.getJSON(url, function (data) {
list(data);
});
};
}
var Admin3App = window.Admin3App = window.Admin3App || {};
Admin3App.viewModel = new adminViewModel();
ko.applyBindings(Admin3App.viewModel);
function getLeftChildren(id)
{
Admin3App.viewModel.getChildren(id, Admin3App.viewModel.leftItems);
}
getLeftChildren(0);
}
(编辑: initko.observable
缺少一个 Id (即使这没有导致错误,添加它)
这是如何工作的,视图模型将加载一堆没有父项(id 0)的项目。为了简单起见,我只包括了左侧版本。但是该页面的左侧和右侧都有一个项目列表,因此每个项目都有一个功能。
左侧项目被填充以查看模型左侧项目并显示如下。但是每个项目都是一个链接,一旦通过 javascript 单击将根据父 ID 刷新项目。(很像在资源管理器中浏览文件夹查看器)。
但我不知道如何在淘汰赛中声明绑定以建立 url。我知道这可能非常容易,我只是想念它。
这是我尝试过的html
<div class="leftView">
<div data-bind="foreach: leftItems">
<a data-bind="text: Name, attr : { href:'javascript:getLeftChildren(' + Id + ')' }"></a><br />
</div>
</div>
(编辑:错过了一个单引号,但还是得到了同样的错误)但我不断收到一个绑定错误