在淘汰赛上JSON请求后,字段没有更新

时间:2015-12-09 21:49:27

标签: javascript jquery knockout.js

有时用户会手动填写输入本地,姓名,年龄等,或者他们会自动调用ajax并填写。 我试图在json请求后动态更新字段:

$.getJSON(url, function (well) {
    if (well) {
        $("[name=local]").attr({'value': well.local, disabled: true})
        $("[name=name]").attr({'value': well.name, disabled: true})
        $("[name=age]").attr({'value': well.age, disabled: true})
    }
}

当我输入姓名+年龄

时,有些字段会自动填满
<g:textField name="local" value="${well.local}" data-bind="value: local"/>
<g:textField name="name" value="${well.name}" data-bind="value: name"/>
<g:textField name="age" value="${well.age}" data-bind="value: age"/>


<g:textField name="nameAge" value="${well.nameAge}" disabled="disabled" data-bind="value: nameAge, attr:{ 'value': nameAge}""/>
<g:hiddenField name="nameAge" data-bind="value: nameAge, attr:{ 'value': nameAge}"/>

这在json放置值之后无法工作,但只能输入。

self.nameAge= ko.computed(function () {
    return self.name() + " - " + self.age();
});

我能为这项工作做些什么?

1 个答案:

答案 0 :(得分:0)

尝试从元素中获取视图模型,例如:

 $.getJSON(url, function (well) {
    if (well) {
       var vm=ko.dataFor($("[name=local]")[0]);
        vm.local(well.local);
        vm.age(well.age);
        vm.name(well.name);
    }
 }

或者你可以试试这个(我不确定):

  $.getJSON(url, function (well) {
     if (well) {
        $("[name=local]").attr({'value': well.local, disabled: true}).change()
        $("[name=name]").attr({'value': well.name, disabled: true}).change()
        $("[name=age]").attr({'value': well.age, disabled: true}).change();
}

XD