无法为Javascript对象AngularJS设置值

时间:2014-11-06 09:41:50

标签: angularjs

我的代码就像这样

  $scope.shipment = new function () {
      this.type = "";
      this.carrier = "";
      this.sInstruction = "";
      this.getInfo = function () {
          if (this.type == 'collect-parcel') {
              $http.post('../services/getratesws.aspx', { 'Content-type': 'application/json' }).
                  success(function(data) {
                      this.sInstruction = data;

                  });
          } 
      };
  }

正如你所看到的,我正试图为" sInstruction"设定价值。我的功能。但是没有采用这个价值而且" sInstruction"仍然是空的。任何人都可以指出我做错了什么?

2 个答案:

答案 0 :(得分:3)

当你在函数中使用'this'时,你无法确定它是否与主函数相同,因为在javascript中每个函数都有它自己的范围。

尝试执行以下操作:

在函数前的代码中设置:

var that = this;

中使用'that'

答案 1 :(得分:2)

您已在功能this.sInstruction中设置了$scope.shipment,因此您可以在功能发货范围内使用sInstruction。现在你正在尝试

 $http.post('../services/getratesws.aspx', { 'Content-type': 'application/json' }).
                      success(function(data) {
                          this.sInstruction = data;

                      });

这显然不起作用,因为成功函数中的这个仅限于成功函数的范围。

此问题的解决方案是将this从发货功能保存到变量中,然后在成功功能中使用它。

你可以这样做, 在定义属性的函数中设置var temp=this。即在您的情况下,这应该在功能装运中设置,但应该超出任何其他嵌套功能。 现在您可以使用temp.sInstruction = data;