当数据将对象链接到表单时,我遇到了奇怪的行为,这导致我重新质疑数据绑定的究竟是什么?
基本上我有一个创建新公司以及更新它们的表格。实际的创建/更新是通过 ajax 完成的,这就是为什么我为这两个目的使用相同的表单。在我必须创建一家公司的情况下,一切都按我的预期进行。但是,当我必须更新一家公司时,事情并不像我期望的那样工作。请看下面的代码。
这是我的示例表单 HTML:
<div id="result"></div>
<script type="text/x-jsrender" id="CompanyFormTemplate">
<form>
<input type="text" data-link="Company.Name" />
</form>
</script>
这是我的 Javascript 代码:
var app = new CompanyFormContext();
function CompanyFormContext() {
this.Company = {
Name: ''
};
this.setCompany = function (company) {
if (company) {
$.observable(this).setProperty('Company', company);
}
};
};
$(function () {
initPage();
...
if (...) {
// we need to update company information
app.setCompany({ Name: 'Company ABC' });
}
});
function initPage() {
var template = $.templates('#CompanyFormTemplate');
template.link("#result", app);
}
它不是显示“公司 ABC”的表单输入,而是空的。但是,如果我在其中输入任何内容,那么 Company.Name 值确实会改变!但是,虽然我希望数据的输入绑定到我的 Company 对象的 Name 属性,但我还希望它知道对(父) Company 对象所做的任何更改,并相应地更新它的数据绑定到它的 Name 属性。
所以我的问题是我应该如何改变我编写这段代码的方式,以便我可以在根对象和属性上实现数据绑定?