我在下面定义了一个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
}
答案 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"))