计算的可观察量不更新值

时间:2015-06-29 14:07:40

标签: javascript knockout.js

我目前正在学习如何在我的项目中加入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>
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题在于计算基于在options对象上传递的原始值,而不是从它们创建的可观察对象。您只需要从observables更新它即可工作:

viewModel.getFullName = ko.computed(function () {
    return viewModel.forename() + ' ' + viewModel.surname();
});