JsObservable设置具有子属性的属性



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

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);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://www.jsviews.com/download/jsviews.js"></script>
<div id="content">
    <input data-link="formData.selectedThing trigger=true"/>
    <br/>
    <input data-link="formData.selectedPlace trigger=true"/>
</div>
<button id="btnUpdate" type="button">Update</button>

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

回答"克隆自"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/

相关内容

  • 没有找到相关文章

最新更新