使用ember从ajax响应发送动作

时间:2016-07-11 07:40:57

标签: jquery ember.js

我是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函数,但它的剂量工作

怎么办?

1 个答案:

答案 0 :(得分:0)

好的,有人在工作帮助我,解决方案是第二个问题,这意味着我建议的解决方案 我得到这个错误的原因是因为模型位于控制器上,因此无法在路径上找到它

解决方案是这样做的:

self.get('controller.model').pushObject(Ember.Object.create(data));