我目前正在学习如何将 knockoutJS 合并到我的项目中,但是,我遇到了一个让我困惑的问题。
我有一个简单的计算可观察值,它返回两个连接字符串的值。我遇到的问题是,该方法在 View 首次加载时返回正确的值,但是,如果我更新函数中使用的一个可观察量,则不会显示更新的值。
index.cshtml
@model KnockoutProjectt.Models.Register
<input type="text" data-bind="value: forename" />
<p data-bind="text: forename"></p>
<p data-bind="text: getFullName"></p>
@section Script {
<script src="~/Scripts/scripts.js"></script>
<script>
var options = {
forename: '@Html.Raw(Model.Forename)',
surname: '@Html.Raw(Model.Surname)',
email: '@Html.Raw(Model.Email)'
};
var viewModel = init(options);
ko.applyBindings(viewModel);
</script>
}
scripts.js
function init(options) {
var viewModel = {
forename: ko.observable(options.forename),
surname: ko.observable(options.surname),
email: ko.observable(options.email)
}
viewModel.getFullName = ko.computed(function () {
return options.forename + ' ' + options.surname;
});
return viewModel;
}
任何帮助将不胜感激。
最佳答案
问题是计算结果是基于 options
对象上传入的原始值,而不是根据它们创建的可观察值。您只需更新它即可从可观察到的数据中工作:
viewModel.getFullName = ko.computed(function () {
return viewModel.forename() + ' ' + viewModel.surname();
});
关于javascript - 计算的可观察量不更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117848/