Javascript 具有子属性的JsObservable设置属性
我将如何使用链接到表单元素的子属性数据对对象进行可观察的更新Javascript 具有子属性的JsObservable设置属性,javascript,jquery,observable,jsviews,data-linking,Javascript,Jquery,Observable,Jsviews,Data Linking,我将如何使用链接到表单元素的子属性数据对对象进行可观察的更新 var-app={ 表格数据:{ 选择内容:“内容值1”, 所选地点:“地点值1” } }; $(“#btnUpdate”)。在(“单击”,函数(){ var replacementForm={ 选择内容:“内容值2”, 所选地点:“地点值2” } $.observable(app).setProperty(“formData”,replacementForm); }); $(“#内容”).link(正确,应用程序) 更新回答“
var-app={
表格数据:{
选择内容:“内容值1”,
所选地点:“地点值1”
}
};
$(“#btnUpdate”)。在(“单击”,函数(){
var replacementForm={
选择内容:“内容值2”,
所选地点:“地点值2”
}
$.observable(app).setProperty(“formData”,replacementForm);
});
$(“#内容”).link(正确,应用程序)代码>
更新
回答“克隆自”
它不起作用的原因是因为您使用的是一个“深层路径”formData。selectedThing
——默认情况下,它只“侦听”叶级别的可观察到的更改,而不是更深层的更改。要选择同时监听formData
对象中的更改,而不仅仅是leafselectedThing
属性,您需要将
替换为^
,以指示您要监听路径中的更深层次:
<input data-link="formData.selectedThing trigger=true"/>
<input data-link="formData.selectedPlace trigger=true"/>
请参阅本文档主题中的“路径:叶更改或深度更改”一节:
另请参阅本主题中的示例,例如:带有普通对象和数组的JSView:
此处更新了JSFIDLE:回答“克隆自”
它不起作用的原因是因为您使用的是一个“深层路径”formData。selectedThing
——默认情况下,它只“侦听”叶级别的可观察到的更改,而不是更深层的更改。要选择同时监听formData
对象中的更改,而不仅仅是leafselectedThing
属性,您需要将
替换为^
,以指示您要监听路径中的更深层次:
<input data-link="formData.selectedThing trigger=true"/>
<input data-link="formData.selectedPlace trigger=true"/>
请参阅本文档主题中的“路径:叶更改或深度更改”一节:
另请参阅本主题中的示例,例如:带有普通对象和数组的JSView:
更新了jsfiddle here:是否有一种简单的方法来删除可观察订阅“^”在根对象上使用时创建的无关“jQuery#”属性,以使此示例正常工作?我无法将formData发送到服务器,因为JSON对象突然与datacontract不匹配。JSON.stringify(对象)将删除jQuery expando属性。有关详细信息,请参阅,还有。是否有一种简单的方法可以删除可观察订阅“^”在根对象上使用时创建的无关“jQuery#”属性,以使此示例正常工作?我无法将formData发送到服务器,因为JSON对象突然与datacontract不匹配。JSON.stringify(对象)将删除jQuery expando属性。有关详细信息,请参见和。