【问题标题】:Cannot sendAction to route from component in ember无法 sendAction 从 ember 中的组件路由
【发布时间】:2016-06-07 18:27:27
【问题描述】:

我正在尝试通过两个组件向上发送一个操作到我将触发 createRecord 操作的路由。我一直在控制台上。通过链登录,但我似乎从未到达过路线。这是我的路线的代码:

import Ember from 'ember';

export default Ember.Route.extend({
  store: this.get('store'),
  actions: {
    createEvent (concert) {
      debugger;
      console.log(concert, 'events route');
      console.log(this.get('store'));
      let events = this.get('store').createRecord(concert);
      return events.save();
    }
  }
});

还有我的路线模板:

{{display-search-results creatEvent="createEvent"}}

随后的组件/组件模板,按顺序是:

显示搜索结果临时:

{{thumbnail-for-search-results event=event createEvent="createEvent"}}

显示搜索结果组件:

import Ember from 'ember';

export default Ember.Component.extend({
  classNames: ['col-md-3'],
  actions: {
    createEvent(concert) {
      console.log(concert, "display-search-results comp");
      this.sendAction('createEvent', concert);
    }
  }
});

thumbnail-for-search-results temp:

<img class='event-pic' src={{event.image_url}} onError="this.src='http://i.imgur.com/r7UiMQr.png';">
      <div class="caption">
        <h3 class="thumb-title">{{event.title}}</h3>
        <p class="event-description">
           {{event.venue_name}} <br> {{event.start_time}} <br> <br>{{event.city_name}} <br>
           {{event.region_name}} <br>{{event.country_name}}
        </p>
        <p><a class="btn btn-primary" role="button"{{action "createEvent" concert on="click"}}>>Add Event</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
     </div>

thumbnail-for-search-results 组件:

import Ember from 'ember';

export default Ember.Component.extend({
  classNames: ['thumbnail'],
  // concert: this.get('store').find('eventful-event'),
  actions: {
    createEvent() {
      console.log(this.get('event'), "thumb comp")
      this.sendAction('createEvent', this.get('event'));
    }
  }
});

【问题讨论】:

  • 请显示您的组件的使用情况
  • @VasiliyVanchuk 哪个组件?
  • DZ已经帮你)
  • 你为什么不删除商店:this.get('store'),你不需要那个......
  • 路由未连接到模板,您需要将处理程序移动到控制器,或使用ember-route-action 插件。

标签: javascript ember.js ember-data ember-cli


【解决方案1】:

我认为你触发的动作名称是错误的,它是 createEvent,而不是创建记录。我创建了一个 ember twiddle 用于从组件到路由操作的交互。

你可以在这里查看https://ember-twiddle.com/a81fbae955602bd9ed375995014c9fe6?openFiles=components.display-search-results.js%2Ctemplates.components.thumbnail-for-search-results.hbs

【讨论】:

  • 我不确定您认为我在哪里犯了错误。我应该在哪里将 createRecord 更改为 createEvent?在我的路线上?
【解决方案2】:

这仅仅是因为这里的错字:

{{display-search-results creatEvent="createEvent"}}

使用createEvent 而不是creatEvent

【讨论】:

  • 谢谢你,是个错误。它没有解决问题。尝试使事情正常工作并更改命名时发生了错字。
  • 我已经修改了@prudvi 给出的旋转来工作。修正错字修正了错误。你可以看这里:ember-twiddle.com/15e7f89a092ba8b057f2f6a79870705a
猜你喜欢
  • 2013-12-05
  • 2017-02-15
  • 2014-11-07
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 2017-10-24
相关资源
最近更新 更多