我目前正在学习如何在我的项目中加入knockoutJS,然而,我遇到了一个让我感到难过的问题。
我有一个简单的计算observable,它返回两个连接字符串的值。我遇到的问题是该方法在视图首次加载时返回正确的值,但是,如果我更新了我的函数中使用的一个observable,则不会显示更新的值。
index.cshtml
false
scripts.js中
@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>
}
非常感谢任何帮助。
答案 0 :(得分:1)
问题在于计算基于在options
对象上传递的原始值,而不是从它们创建的可观察对象。您只需要从observables更新它即可工作:
viewModel.getFullName = ko.computed(function () {
return viewModel.forename() + ' ' + viewModel.surname();
});