【发布时间】:2016-07-11 07:40:57
【问题描述】:
我是 ember 的新手,我尝试在我的应用中向某个路线发送操作,
但我想从 AJAX 响应发送操作,因为我还需要从服务器插入的 id
所以我尝试这样做:
$.ajax({
method: "POST",
url: "in",
data: datajson,
success: function (result) {
data.id = result.id;
self.sendAction('action', data);
}
});
self 是一个全局变量,我为它分配了组件的this 的值。
现在它不工作了,没有发送到路由器
但是当我把sendAction 出ajax 成功函数
“父亲”路由中的函数被触发
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(...) is not a function
我尝试搜索,我发现我需要在 get 方法之后添加 .toArray 函数,但它也不起作用
怎么办?
【问题讨论】:
-
您能展示模板并展示如何将组件添加到模板吗?
-
@MirzaMemic 我编辑了我的问题,请查看两个编辑,谢谢。
-
请同时包含组件JS代码。谢谢
-
您对
self的全球化是认真的吗?如果是,为什么,它没有破裂是有道理的。如果没有,在您的 EDIT2 中是var之前的self丢失。您真正想要达到什么目的?你在使用'ember-data'吗?您是否考虑过使用当前的 ember 版本? -
@MirzaMemic 我编辑并添加了组件代码