【问题标题】:Send action from ajax response with ember使用 ember 从 ajax 响应发送操作
【发布时间】: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 我编辑并添加了组件代码

标签: jquery ember.js


【解决方案1】:

好的,工作中有人帮了我,解决方案是针对第二个问题,意思是我建议的解决方案
我收到此错误的原因是模型位于控制器上,因此在路线上找不到它

解决方案是这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 2016-07-11
    • 1970-01-01
    • 2023-03-23
    • 2017-06-09
    • 2013-09-09
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多