gpt4 book ai didi

javascript - 我的绑定(bind)有什么问题?

转载 作者:行者123 更新时间:2023-11-30 08:52:51 25 4
gpt4 key购买 nike

在我们开始之前,我想指出这是使用 html/js 和 knockout 的第零天,所以我可能只是误解了它们是如何协同工作的。

我已经制作了一个简单的测试 webapi,因此我可以掌握 knockout 。到目前为止一切正常,但我似乎无法开始工作的绑定(bind) <span data-bind="text:currentMember().name"></span>

页面

<!DOCTYPE html>
<html>
<head>
<title>Test page</title>
<script src="Scripts/knockout-2.2.1.js"></script>
<script src="Scripts/jquery-2.0.0.js"></script>
<script src="Scripts/ViewModels/indexViewModel.js" defer="defer"></script>
</head>
<body>
<div id="Content">
<section>
<p>Member Number: </p> <input id="memberNumber" type="text" />
<p>Pin: </p> <input id="memberPin" type="text" />
<input type="submit" value="Get" data-bind="click: getMember" />
</section>
<span data-bind="text:currentMember().name"></span>
</div>
</body>
</html>

View 模型

function IndexViewModel() {
var self = this;

self.currentMember = ko.observable();

self.getMember = function () {

var memberNumber = $('#memberId').val();
var memberPin = $('#memberPin').val();

if (memberNumber == '' || memberPin == '') {
memberNumber = '372-001100-134';
memberPin = '123456';
}

$.ajax({
dataType: "json",
url: "http://localhost:25979/api/members/GetMemberByNumberAndPin",
data: {
memberNumber: memberNumber,
pin: memberPin
},
success: function (serviceResponse) {
if (!serviceResponse.hasAlerts) {
self.currentMember(serviceResponse.body);
alert(self.currentMember().name);
}
}
});
};
}

ko.applyBindings(new IndexViewModel());

编辑:我已经更改了代码,现在警报确实有效,但 html 绑定(bind)仍未更新。

最佳答案

您已将 currentMember 声明为可观察对象。要设置可观察对象的值,您需要将其作为函数调用。所以试试 self.currentMember(serviceResponse.body) 代替。如果您按原样执行 self.currentMember = seviceResponse.body,您实际上会将 currentMember 变量重新定义为常规的不可观察变量。

检查 documentation进一步解释。

关于javascript - 我的绑定(bind)有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279312/

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