Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Windows 8 访问对象';从回调函数中删除字段_Windows 8_Windows Runtime_Winjs - Fatal编程技术网

Windows 8 访问对象';从回调函数中删除字段

Windows 8 访问对象';从回调函数中删除字段,windows-8,windows-runtime,winjs,Windows 8,Windows Runtime,Winjs,我最近开始学习使用js开发metro应用程序,在更新回调函数中的\u title和\u errorMessage字段\u success和\u error时遇到了问题。调用这些函数时,此不再引用MyClass对象。所以我的问题是如何从回调函数更新这两个字段 (function () { var MyClass = WinJS.Class.define( function () {}, { _title: "",

我最近开始学习使用js开发metro应用程序,在更新回调函数中的
\u title
\u errorMessage
字段
\u success
\u error
时遇到了问题。调用这些函数时,此不再引用
MyClass
对象。所以我的问题是如何从回调函数更新这两个字段

(function () {

 var MyClass = WinJS.Class.define(
            function () {},

            {
                _title: "",
                _errorMessage: "",

                Authorize: function () {
                    WinJS.xhr({url:"http://example.com"})
                        .then(this._success,this._error);
                },
                _success: function(data){
                    this._title = data.responseData;
                },
                _error: function (data) {
                    this._errorMessage = data.responseData;
                }

            },
            {

            }
        );

    WinJS.Namespace.define("MynameSpace",
        {
            MyClass: MyClass
        });

})();

您可以使用函数的
bind
方法设置上下文

(function () {

 var MyClass = WinJS.Class.define(
            function () {},

            {
                _title: "",
                _errorMessage: "",

                Authorize: function () {
                    WinJS.xhr({url:"http://example.com"})
                        .then(this._success,this._error);
                },
                _success: (function(data){
                    this._title = data.responseData;
                }).bind(this),
                _error: (function (data) {
                    this._errorMessage = data.responseData;
                }).bind(this)

            },
            {

            }
        );

    WinJS.Namespace.define("MynameSpace",
        {
            MyClass: MyClass
        });

})();
我不明白这些函数怎么会在错误的上下文中被调用。
没关系,我明白了。

您可以使用代理变量,如下所示

Authorize: function () {
     var _this = this;
     WinJS.xhr({url:"http://example.com"}).
     then(function(data){
              _this._success(data);
          }, function(data){
              _this._error(data);
          });
}