【问题标题】:NativeScript How to pass Data from service to component?NativeScript 如何将数据从服务传递到组件?
【发布时间】:2019-02-04 04:01:45
【问题描述】:

我有一个 service,它创建了一个 HttpGet 方法,我想将从服务器返回的对象传递给 Task component 中的数组

我知道使用 Promise 是一种更好的方法,但我对它不是很熟悉。

这就是我目前所做的:

组件:

userTaskList: Task[ ];

  this.data=this.taskService.getAllTasks()
    this.userTaskList.push(this.data);

服务:

getAllTasks() {
    const req = this.http.get(`${this.serverUrl}/GetTasks`).toPromise().then(
        res => {
        console.log("success" , res);
    });
}

我在我的日志中得到了对象。

success [{
JS:   "Id": 27,
JS:   "UserId": 12,
JS:   "Name": "Teeest",
JS:   "Description": "99",
JS:   "Latitude": 0,
JS:   "Longitude": 0,
JS:   "Radius": 99,
JS:   "Created": "2018-08-29T14:01:51.0272032+03:00",
JS:   "LastUpdate": "2018-08-29T14:01:51.0272032+03:00",
JS:   "IsActive": true
JS: }]

但是我如何获取它并将其发送到组件? 我想在userTaskList 中列出对象。

谢谢!!

【问题讨论】:

  • 使用 observables。您可以订阅更新并使用 observables 做更多事情

标签: angular promise nativescript pass-data


【解决方案1】:

我知道它是使用 Promise 的更好方法,但我不太熟悉 用它。

没有。一点也不。 promise 不支持,重试,去抖动,switchMaps 等。

更不用说http请求是自动完成的(rxjs POV)

无论如何:

将您的代码更改为:

组件:

this.taskService.getAllTasks().toPromise().then((data)=> { this.userTaskList =  data});

服务:

getAllTasks() {
   return  this.http.get(`${this.serverUrl}/GetTasks`) ;
}

async foo(){

let data = await  this.taskService.getAllTasks().toPromise() ;
this.userTaskList = data

}

服务应该在没有调用的情况下公开功能。 当您调用 时,您将获得值。

顺便说一句 - 我会用 Observable 来做的。但我继续你的例子。

所以我会用这个:

 this.taskService.getAllTasks().subscribe((data)=> { this.userTaskList =  data});

 getAllTasks() {
       return  this.http.get(`${this.serverUrl}/GetTasks`) ;
    }

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 2017-05-06
    • 2018-06-30
    • 2019-05-26
    • 2018-07-08
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多