Javascript 从AngularJS服务提取数据
嗨,我在AngularJS的定制服务中遇到了麻烦,我准备了以下代码片段 对于HTML:Javascript 从AngularJS服务提取数据,javascript,angularjs,angular-services,Javascript,Angularjs,Angular Services,嗨,我在AngularJS的定制服务中遇到了麻烦,我准备了以下代码片段 对于HTML: {{x.Name} 对于AngularJS服务 var app = angular.module('myApp', []); app.service('myfuncA', function($http){ $http.get('lib/data.txt').success(function(datax){ this.dataM = datax; }).error
- {{x.Name}
对于AngularJS服务
var app = angular.module('myApp', []);
app.service('myfuncA', function($http){
$http.get('lib/data.txt').success(function(datax){
this.dataM = datax;
}).error(function(){
var den = console.log("No Data");
this.case = den;
});
});
控制器
app.controller('ctrlC', function($scope, myfuncA){
$scope.cors = myfuncA.datax;
});
数据没有被提取,也没有错误。$http.get方法返回HttpPromise($http#get)。 下面是用法示例:$http 尝试使用:
$http.get('lib/data.txt').then(function(datax){
this.dataM = datax;
}, function(){
var den = console.log("No Data");
this.case = den;
});
沿着这条线的东西。没有测试,但会给你一个想法。另外,您应该使用$log服务,也不知道为什么要将其设置为变量。数据是如何存储在txt文件中的?我想是JSON。但希望这能让你走上正轨
var app = angular.module('myApp', []);
app.service('myfuncA', function($http){
return $http.get('lib/data.txt').then(function(datax){
return datax;
});
})
控制器:
app.controller('ctrlC', function($scope,$log myfuncA){
myfuncA.then(function(datax){
$scope.cors = datax;
},function() {$log.log("No Data");};
});
});
另一方面,对于$http调用,我宁愿使用一个工厂并将该工厂注入控制器以设置$scope.cors。大概是这样的:
app.factory('myfuncA', function($http){
return {
getData: function() {
return $http.get('lib/data.txt');
};
}
});
在控制器中,我将消耗工厂:
app.controller('ctrlC', function($scope, myfuncA){
myfuncA.getData().then(function(response) {
$scope.cors = response.data;
});
});
datax
是一个内部变量,不可用于服务外部的上下文
尝试返回$http的承诺。获取
或更好的承诺结果
app.service('myfuncA', function($http){
var service = {
run: run
};
function run(){
var ret;
$http.get('lib/data.txt')
.success(function(datax){
ret = datax;})
.error(function(){
console.log("No Data");});
return ret;
}
}))我认为问题在于,
此
不是指您的服务对象
“即使它看起来是指定义它的对象,但直到对象调用this函数,它才被实际赋值。分配给它的值完全基于调用此函数的对象。在大多数情况下,它具有调用对象的值。但是,在一些情况下,它没有调用对象的值。我稍后再谈这些情况。”
当我们借用使用this的方法、将使用this的方法赋给变量、将使用this的函数作为回调函数传递以及在闭包中使用this时,this关键字最容易被误解
如果我是你,我会使用其他类型的语法,例如:
angular.module('myApp').factory('myfuncA', dataService);
/* @ngInject */
function dataService($http) {
var service = {
getData: getData
};
return service;
function getData() {
return $http.get('lib/data.txt');//$http.get method returns HttpPromise
}
}
那么使用它:
myfuncA.getData().then(function (result) {
//your code
}
尝试在http.get()中使用完整路径您将获得CORS errorXMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问Origin“”。请参阅数据正在传输,但情况是u共享的数据和我粘贴的数据,但它不会出现在视图中。您需要将承诺返回给控制器,然后继续控制器设置$scope变量,然后从返回的承诺回调-如果我得到时间,time将发布一些代码。