Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ASP.NET AJAX DataContext对象不跟踪嵌套复杂类型上的更改_Javascript_Ajax_Asp.net Ajax - Fatal编程技术网

Javascript ASP.NET AJAX DataContext对象不跟踪嵌套复杂类型上的更改

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()){ 顾客= [ {联系人:{姓名:'

为了让ASP.NET AJAX DataContext对象跟踪我对复杂类型的更改,我已经奋斗了很长时间。绑定似乎正常工作,底层对象得到更新,但DataContext对象不跟踪更改

下面是我的代码的简化版本(使用WCF fetch和save调用)


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>