【发布时间】:2016-03-09 21:26:41
【问题描述】:
当我转移到我的新路线时,我设置了 reportName 属性,我希望根据观察报告名称更改 postobject 并触发发送 ajax 请求。在 ajax 的响应中,我得到了我想作为属性传递给我的图形组件的数据,并且这个带有数据值的更新属性会导致我的组件中的一个函数被触发。但我不能这样做。你能告诉我我做错了什么吗?我是 ember 的新手。 Pod 控制器:
export default Ember.Controller.extend(ApplicationRouteMixin, {
sessionService: Ember.inject.service('session'),
nameOfReport: null,
postObject: function(){
return {
Name: this.get('nameOfReport'),
Take: 30,
Skip: 0,
};
}.property('nameOfReport'),
ajaxResponse: function(){
var restApiHost = serverPath + '/report';
var postobj= this.get('postObject');
var token =this.get('sessionService.session.authenticated.access_token');
Ember.$.ajax({
url: restApiHost,
type: 'POST',
data: JSON.stringify(postobj),
contentType: 'application/json; charset=utf-8',
dataType: "json",
beforeSend: function (xhr) {
var bearer = 'Bearer ' + token ;
xhr.setRequestHeader('Authorization', bearer);
xhr.setRequestHeader('Content-type', 'application/json');
},
success: function (data) {
var graphobj= {
data: data.data,
graphModel: GraphModel.create({
graphHeight: "320",
graphMargin: [40, 80, 40, 60],
xDomain: [1, 10],
yDomain: [1, 100]
…
})};
Ember.set(this,'graphobject', graphobj);
},
fail: function () {
alert('Could not contact server');
},
});
}.property('postObject'),
graphobject: function(){
this.get('ajaxResponse');
}.property('ajaxResponse'),
});
Pod 模板:
<div>
{{line-graph model= graphobject }}
</div>
组件:
drawGraph: function() {
// define dimensions of graph
var graphdata = this.get('model.data');
var graphmodel = this.get('model.graphModel');
...
}.property('graphobject'),
【问题讨论】:
-
你考虑过
ajaxResponse方法的异步行为吗? -
Ajax 响应的行为是我主要关心的问题。我正在寻找的是用我从 Ajax 请求返回的数据来绘制我的图形组件
标签: javascript ajax ember.js