JsObservable设置具有子属性的属性

时间:2015-11-05 00:49:45

标签: javascript jquery observable jsviews data-linking

如何对具有数据链接到表单元素的子属性的对象进行可观察的更新?



on 1:QUIT: {
  if ($read(txt\free.txt,nw,$nick)) {
    write -dl $+ $readn txt\free.txt
  }
}

var app = {
    formData: {
        selectedThing: "thingValue1",
        selectedPlace: "placeValue1"
    }
};



$("#btnUpdate").on("click", function(){
    var replacementForm = {
        selectedThing: "thingValue2",
        selectedPlace: "placeValue2"
    }
    $.observable(app).setProperty("formData", replacementForm);
});

$("#content").link(true, app);




我有一些数据链接到对象属性的输入字段,当用户按下按钮时,所有这些字段都需要使用对象进行更新(从服务器接收为JSON,反序列化为与表单元素下面的数据对象。)这是我的jsfiddle: http://jsfiddle.net/xpe1ds0a/

1 个答案:

答案 0 :(得分:0)

https://stackoverflow.com/a/32339038/1054484

回答'克隆'

它不起作用的原因是因为你正在使用“深度路径”formData.selectedThing - 默认情况下,只在叶级别“监听”可观察到的变化,而不是更深层次。要选择收听formData对象中的更改,而不仅仅是叶selectedThing属性,您需要将.替换为^以表明您要倾听更深层次的道路:

<input data-link="formData.selectedThing trigger=true"/>
<input data-link="formData.selectedPlace trigger=true"/>

请参阅本文档主题中的路径:叶子更改或深层更改部分: http://www.jsviews.com/#observe

另请参阅本主题中的示例:带有普通对象和数组的JsViews示例:http://www.jsviews.com/#explore/objectsorvm

在此处更新了jsfiddle:http://jsfiddle.net/xpe1ds0a/1/