从服务器获取的数据采用这种格式,我希望它以对象的形式出现。
{
"mappings": {
"_doc": {
"properties": {
"myProperty": {
"fields": {
}
}
}
}
}
}
这是我如何从服务器获取数据。
public getOrder(): Observable < ORDERS > {
return this._http.get < ORDERS > (`${this._apiBase}/charts/list/ORDERS/`);
}
答案 0 :(得分:2)
这可能意味着您的服务未将http标头的 Content-Type 属性设置为 application / json 。
如果您拥有服务,则可以尝试设置响应的标头属性。
如果您无法更改它,则可以尝试使用const app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
item: {
foo: 'test',
},
},
//for test run, wait 3000ms
mounted(){
setTimeout(function(){
this.item.foo = 'a';
}.bind(this),3000);
},
watch: {
'item.foo': 'itemFooChanged'
},
},
methods:
{
itemFooChanged (newVal, oldVal)
{
console.log(newVal); // running
this.message='new Hello'; // this.message works
}
}
});
方法。
答案 1 :(得分:0)
这可以解决问题!
public getOrder(): Observable < ORDERS > {
return this._http.get(`${this._apiBase}/charts/list/ORDERS/`).map((res) => <ORDERS>res.json())
}
答案 2 :(得分:0)
只需使用json
方法转换您的响应即可。
public getOrder(): Observable < ORDERS > {
return this._http.get(`${this._apiBase}/charts/list/ORDERS/`)
.map((res) =>res.results as ORDERS[] || [])
.catch((error:any) => Observable.throw(error.json().error));
}