访问服务中的angularjs服务属性

时间:2017-01-24 23:57:11

标签: javascript angularjs

我在下面定义了一个angularjs服务。在我的角度服务中,我想访问我的服务变量。有两个位置:我评论过#34;第一个"和第二个"。在" FIRST THIS",我可以访问我的" svc"变量正确,所以this.testvar会给我' foo1'。然而,在" SECOND THIS"," this"变量变化,不再是" svc"变量。如何在" SECOND THIS"?访问svc变量?

另外一个问题是...... svc的变量类型是否有名称?它不是JSON,因为它具有作为关键值之一的功能。

    angular
      .module('myApp')
      .service('myService', function($q, $http, $cookies, $state) {
          var svc = {
            testvar: 'foo1',
            func1: function(callback) {

              console.log(this); // FIRST THIS
              $http.post(endpoint).success(function(response) {
                console.log(this); // SECOND THIS
              }).error(function(response, status) {

              });
            },
          }
          return svc
        }

3 个答案:

答案 0 :(得分:1)

声明一个新变量,例如使用self来代替this,那么在整个服务中它将意味着同样的事情。

angular.module('myApp').service('myService', function($q, $http, $cookies, $state) {

    var self = this; // Declare a new variable to act as a handle to "this";

    var svc =  {
        testvar: 'foo1',
        func1: function(callback) {

            // Use the new variable here.
            console.log(self);

            $http.post(endpoint).success( function(response) {

                // Use the new variable here also.
                console.log(self);

            }).error(function(response, status){

            });
        },
    }
    return svc
}

svc是一个对象

答案 1 :(得分:0)

在"第二次"范围(this)属于$ http范围而不是" FIRST THIS"。您可以声明其他变量_that以保存最后一个范围,例如:

func1: function(callback) {

  var _that = this;

  $http.post(endpoint).success(function(response) {
    //use _that here :)
  }).error(function(response, status) {

  });
}

答案 2 :(得分:0)

你可以做这样的事情,希望它有所帮助。进行一些重组。

stargazer::stargazer(
  lm(Fertility ~ . , 
     data = swiss), 
  type = "text", 
  omit = c("Constant", "Agriculture"))