【问题标题】:KnockoutJS not reflecting changes to dependent observable objectsKnockoutJS 不反映对依赖可观察对象的更改
【发布时间】:2013-08-19 11:59:48
【问题描述】:

好的,我给。我第一次尝试在一个新的 MVC4 项目中连接 KO。我已经很接近了,但有些地方有点不对劲……希望有一位常驻的 Knockout 天才愿意俯冲过来,把我从痛苦中解救出来!

我的页面中包含了以下js(实际变量名称不同)-

$(document).ready(function() {
    var viewModel = ko.mapping.fromJS(@Html.Raw(Json.Encode(Model)));
    viewModel.Person.Name = ko.computed(function () {
            return this.Nickname();
    }, viewModel.Person);

    ko.applyBindings(viewModel);
});

然后在页面下方我有 2 个文本框 -

@Html.TextBoxFor(model => model.Person.Nickname, new { data_bind = "value: Person.Nickname" })
@Html.TextBox("Test", null, new { data_bind = "value: Person.Name" })

Person.Nickname 已经具有 MVC 模型中的值。假设该值是“傻瓜”。 Person.Name 在 MVC 模型中不存在。

在初始页面加载时,两个文本框都包含值“knucklehead”。这是一个好的开始。但是,如果我将昵称更改为其他名称,则名称不会更新。为什么?

【问题讨论】:

  • 我会查看您的渲染输出,看看它是否匹配:jsfiddle.net/rniemeyer/kLqzj。此外,对绑定到Person.Name 的字段进行更新将不起作用,因为它是计算的(不是可写计算的)。但是,“昵称”字段的更新应反映在“姓名”字段中。

标签: knockout.js knockout-mapping-plugin


【解决方案1】:

而且,通常情况下......一旦我发布了这个并在第二天以新的眼光回来,我自己修复了它。这个问题是一个错字。这总是一些愚蠢的事情,不是吗?

感谢所有花时间阅读本文的人,包括 RP Niemeyer!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多