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', 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().then(...) 返回一个 Promise ( read more about this here ),这是一种数据类型,用于保存对异步获取的值的“引用”。因此,在 dataUrl 上运行 console.log 将返回一个对象,而不是字符串。

为了获取该值,您需要异步访问它。最好的方法是通过 promise chaining :

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;
}]);

关于javascript - angularjs函数返回的数组是一个对象,而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47129594/

相关文章:

javascript - 需要允许在 extjs 文本字段中进行单一输入

javascript - angular.forEach 和对象

javascript - 使用 AngularJS 表达式设置输入类型 ="file"在 Chrome 中不起作用

jquery - AngularJS 和指令的初学者问题 - 包装 jQuery 组件

php - 如何将一个类添加到一个动态菜单项?

javascript - 通过javascript启动redis服务器?

javascript - 防止 Angular 转义 HTML

javascript - 嵌套 CSS 类以与 Javascript 一起使用

javascript - 为什么我不在 Angular Controller 中注入(inject)服务?

angularjs - 在执行 angular.bootstrap 之前,我是否需要创建一个 Angular 模块?