Javascript ASP.NET AJAX DataContext对象不跟踪嵌套复杂类型上的更改
为了让ASP.NET AJAX DataContext对象跟踪我对复杂类型的更改,我已经奋斗了很长时间。绑定似乎正常工作,底层对象得到更新,但DataContext对象不跟踪更改 下面是我的代码的简化版本(使用WCF fetch和save调用)Javascript ASP.NET AJAX DataContext对象不跟踪嵌套复杂类型上的更改,javascript,ajax,asp.net-ajax,Javascript,Ajax,Asp.net Ajax,为了让ASP.NET AJAX DataContext对象跟踪我对复杂类型的更改,我已经奋斗了很长时间。绑定似乎正常工作,底层对象得到更新,但DataContext对象不跟踪更改 下面是我的代码的简化版本(使用WCF fetch和save调用) var=null; var-dataContext=null; Sys.require([Sys.components.dataView,Sys.components.dataContext],function()){ 顾客= [ {联系人:{姓名:'
var=null;
var-dataContext=null;
Sys.require([Sys.components.dataView,Sys.components.dataContext],function()){
顾客=
[
{联系人:{姓名:'弗雷德·约翰逊'},国家:{姓名:'美国'},
{联系人:{姓名:'Davie Jones'},国家:{姓名:'England'}
];
dataContext=Sys.create.dataContext();
dataContext.trackData(客户);
Sys.create.dataView(“#CustomerView”,
{
数据:客户
});
});
函数onSave(){
if(dataContext.get\u hasChanges()){
警报(“已保存”);
}
否则{
警报(“无需保存的更改”);
}
}
-
{{Contact.Name}
为什么当我单击save按钮时,更改了country文本框中的值,dataContext对象认为没有要保存的更改?添加Sys.Observer.makeObservable(customers)谢谢您的回复,我确实尝试过,虽然它添加了必要的功能,但它不会使事件冒泡。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/beta/0911/Start.js"></script>
<script type="text/javascript">
var customers = null;
var dataContext = null;
Sys.require([Sys.components.dataView, Sys.components.dataContext], function() {
customers =
[
{ Contact: { Name: 'Fred Johnson' }, Country: { Name: 'USA'} },
{ Contact: { Name: 'Davie Jones' }, Country: { Name: 'England'} }
];
dataContext = Sys.create.dataContext();
dataContext.trackData(customers);
Sys.create.dataView('#CustomerView',
{
data: customers
});
});
function onSave() {
if (dataContext.get_hasChanges()) {
alert("Saved");
}
else {
alert("No changes to save.");
}
}
</script>
</head>
<body xmlns:sys="javascript:Sys">
<div id="CustomerView" class="sys-template">
<ul>
<li>
<label for="country">{{Contact.Name}}</label>
<input id="country" sys:value="{binding Country.Name}" />
</li>
</ul>
</div>
<input id="save" type="button" value="Save" onclick="javascript: onSave();" />
</body>
</html>