gpt4 book ai didi

javascript - 如何使用 knockout 映射插件绑定(bind)匿名对象?

转载 作者:行者123 更新时间:2023-11-29 21:59:07 25 4
gpt4 key购买 nike

我正在尝试从这个 json 数据中列出所有用户名:

[{
"full_name": "root",
"group": 0,
"home": "/root",
"username": "root",
"id": 1
}, {
"full_name": "Owner of many system processes",
"group": 1,
"home": "/root",
"username": "daemon",
"id": 2
}, {
"full_name": "System",
"group": 5,
"home": "/",
"username": "operator",
"id": 3
}]

我的 HTML 看起来像这样:

 <body>
<h2>Knockout list</h2>
<ul data-bind="foreach: users">
<li data-bind="text: username"></li>
</ul>

<script type="text/javascript">
function getUsers()
{
return $.ajax
({
type: "GET",
url: "http://XXX.XXX/api/userinfo",
username: "root",
password: "meh",
cache: false,
dataType: "json"
});
}

getUsers().done(function(results)
{
var users = "{users: " + results + "}";
var viewModel = ko.mapping.fromJS(users);
ko.applyBindings(viewModel);
});

</script>
</body>

在控制台中我得到这个错误:

ReferenceError: users is not defined
with($context){with($data||{}){return{'foreach':function(){return users }}}}

我不认为向 json 添加任何内容是个好主意。我正在尝试使用 var users = "{users: "+ results + "}";,但这是一个比其他任何事情都更绝望的步骤,我想尽可能避免它。

你知道如何让它发挥作用吗?谢谢。

最佳答案

鉴于您的 HTML,您的 View 模型需要有一个名为 users 的属性,因为这是您在 foreach 循环中迭代的内容。我不能确定,但​​是根据结果创建新对象的那一行看起来不对。您可以尝试在您的 View 模型上创建一个明确的 users 属性并将映射结果分配给它:

var viewModel = {};
viewModel.users = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);

创建了一个 jsfiddle ,它在那里工作。

关于javascript - 如何使用 knockout 映射插件绑定(bind)匿名对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24866835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com