【问题标题】:JsObservable setting Property with Child Properties带有子属性的 JsObservable 设置属性
【发布时间】:2015-11-05 00:49:45
【问题描述】:

我将如何对具有与表单元素关联的子属性的对象进行可观察更新?

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 接收,反序列化为与表单元素底层的数据对象。)这是我的jsfiddle: http://jsfiddle.net/xpe1ds0a/

【问题讨论】:

    标签: javascript jquery observable jsviews data-linking


    【解决方案1】:

    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.

    另请参阅本主题中的示例,例如 Example: JsViews with plain objects and arrayhttp://www.jsviews.com/#explore/objectsorvm

    在这里更新了 jsfiddle:http://jsfiddle.net/xpe1ds0a/1/

    【讨论】:

    • 是否有一种简单的方法可以删除可观察订阅“^”在根对象上使用时创建的无关“jQuery#”属性以使此示例正常工作?我无法将 formData 发送到服务器,因为 JSON 对象突然与数据合同不匹配。
    • JSON.stringify(object) 将剥离 jQuery expando 属性。有关详细信息,请参阅 github.com/BorisMoore/jsviews/issues/71github.com/BorisMoore/jsviews/issues/239
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多