Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Javascript angularjs函数返回的数组是对象,而不是字符串_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs函数返回的数组是对象,而不是字符串

Javascript angularjs函数返回的数组是对象,而不是字符串,javascript,angularjs,Javascript,Angularjs,我在让下面的函数作为可用字符串返回时遇到了一些问题 我的代码是: app.factory('Urls', ['$http', function($http) { var urls = {}; urls.getUrls = function () { return $http.get('json/dataUrls.json'); } return urls }]); app.factory('Emails', ['$http', 'Urls',

我在让下面的函数作为可用字符串返回时遇到了一些问题

我的代码是:

app.factory('Urls', ['$http', function($http) {
    var urls = {};
    urls.getUrls = function () {
        return  $http.get('json/dataUrls.json'); 
    }
    return urls
}]);

app.factory('Emails', ['$http', 'Urls', function($http, Urls) {

    var dataUrl = Urls.getUrls().then(function(response) {
        return response.data.emails;
    });
    console.log(dataUrl);

    var query = {};
    query.getItems = function() {
        return  $http.get('json/emails.json');  
    };
    return query;
}]);
下面是
console.log(dataUrl)的结果我试图得到的是值字符串

f {$$state: {…}}
$$state
:
status
:
1
value
:
"json/emails.json"
__proto__
:
Object
__proto__
:
Object
Urls.getUrls()。然后(…)
返回一个promise(),一种用于保存对异步获取的值的“引用”的数据类型。因此,在
dataUrl
上运行
console.log
将返回一个对象,而不是字符串

为了获得这个值,您需要异步访问它。最好的方法是:

Urls.getUrls()。然后(…)
返回一个promise(),一种用于保存对异步获取的值的“引用”的数据类型。因此,在
dataUrl
上运行
console.log
将返回一个对象,而不是字符串

为了获得这个值,您需要异步访问它。最好的方法是:


您从
var dataUrl=url.getUrls()获取的数据URL。那么(…
实际上是一个承诺,而不是字符串。我猜您的意图类似于下面的内容:

app.factory('url',['$http',函数($http){
var url={};
url.getUrls=函数(){
返回$http.get('json/dataUrls.json');
}
返回URL
}]);
app.factory('Emails',['$http','url',function($http,url){
var query={};
query.getItems=函数(){
返回URL.getUrls().then(函数(响应){
返回response.data.email;
}).then(dataUrls=>{//dataUrls这里是一个字符串,您可以使用它。
返回$http.get(dataURL);
});
};
返回查询;
}]);

您从
var dataUrl=url.getUrls()获取的数据URL。那么(…
实际上是一个承诺,而不是字符串。我猜您的意图类似于下面的内容:

app.factory('url',['$http',函数($http){
var url={};
url.getUrls=函数(){
返回$http.get('json/dataUrls.json');
}
返回URL
}]);
app.factory('Emails',['$http','url',function($http,url){
var query={};
query.getItems=函数(){
返回URL.getUrls().then(函数(响应){
返回response.data.email;
}).then(dataUrls=>{//dataUrls这里是一个字符串,您可以使用它。
返回$http.get(dataURL);
});
};
返回查询;
}]);

请将您的代码放入plunker/fiddler/codepen并生成一个可运行的代码段好吗?使用
JSON.stringify(dataUrl)
将对象转换为字符串好吗请将您的代码放入plunker/fiddler/codepen并生成一个可运行的代码段好吗?使用
JSON.stringify(dataUrl)
将object转换为string谢谢你的解释和链接。我需要阅读一些文章才能理解我猜的概念!谢谢你的解释和链接。我需要阅读一些文章才能理解我猜的概念!看看代码,你可以传递数据URL,因为它在同一范围内。
然后(dataUrls=>{return$http.get(dataUrls+'/emails.json');});
查看代码,您可以传递dataUrls,因为它在相同的范围内。
然后(dataUrls=>{return$http.get(dataUrls+'/emails.json');});
app.factory('Urls', ['$http', function($http) {
    var urls = {};
    urls.getUrls = function () {
        return  $http.get('json/dataUrls.json'); 
    }
    return urls
}]);

app.factory('Emails', ['$http', 'Urls', function($http, Urls) {

    Urls.getUrls().then(function(response) {
        return response.data.emails;
    }).then(function(emails){
        console.log(emails);
    });

    var query = {};
    query.getItems = function() {
        return  $http.get('json/emails.json');  
    };
    return query;
}]);
app.factory('Urls', ['$http', function($http) {
    var urls = {};
    urls.getUrls = function () {
        return  $http.get('json/dataUrls.json'); 
    }
    return urls
}]);

app.factory('Emails', ['$http', 'Urls', function($http, Urls) {

    Urls.getUrls().then(function(response) {
        return response.data.emails;
    }).then(function(emails){
        console.log(emails);
    });

    var query = {};
    query.getItems = function() {
        return  $http.get('json/emails.json');  
    };
    return query;
}]);