我是ember& amp;的新手我尝试将动作发送到我的应用程序中的某些路线,
但我想从AJAX响应中发送动作,因为我还需要从服务器插入的id
所以我试着这样做:
$.ajax({
method: "POST",
url: "in",
data: datajson,
success: function (result) {
data.id = result.id;
self.sendAction('action', data);
}
});
self
是一个全局变量,我为其分配了组件this
的值。
现在它不工作,没有发送到路由器
但是当我把sendAction
放出ajax成功函数时
父亲"中的功能路线是trigerred
EDIT1:
模板是:
<script type="text/x-handlebars" data-template-name="in/income">
{{create-in classes=model action="addIn"}}
</script>
<script type="text/x-handlebars" data-template-name="in/expend">
{{create-in classes=model action="addIn"}}
</script>
组件js代码:
App.CreateInComponent = Ember.Component.extend({
classNames: ['fixed'],
sum:null,
cllass: null,
d:null,
actions: {
create: function (classes) {
var classe = this.get('cllass');
var sum = this.get('sum');
des = classes.filterBy('id', classe)[0].des;
self = this;
data = {sum: sum, class: classe, date: this.get('d')};
var dataJSON = JSON.stringify(data);
data.des = des;
$.ajax({
method: "POST",
url: "in",
data: dataJSON,
success: function (result) {
data.id = result.id;
this.sendAction('action', data);
}
});
}
}
});
那么我能做什么呢? (我使用Ember 1.10)
EDIT2:
我想一个解决方案,我的解决方案是将操作发送到路由器,然后对服务器进行ajax调用,然后插入模型数据
我在路由器处理程序中的代码:
addIn: function (dataJSON) {
self = this;
$.ajax({
method: "POST",
url: "in",
data: dataJSON,
success: function (result) {
data.id = result.id;
self.get('model').pushObject(Ember.Object.create(data));
}
});
}
但我在控制台中收到此错误:
(index):265 Uncaught TypeError:self.get(...)不是函数
我尝试搜索,我发现我需要在get方法之后添加.toArray
函数,但它的剂量工作
怎么办?
答案 0 :(得分:0)
好的,有人在工作帮助我,解决方案是第二个问题,这意味着我建议的解决方案 我得到这个错误的原因是因为模型位于控制器上,因此无法在路径上找到它
解决方案是这样做的:
self.get('controller.model').pushObject(Ember.Object.create(data));