2017-02-20 16 views
1

バージョン2.10のember jsを使用しています。コンポーネントからルートにデータを送信しようとしています。ここでデータをコンポーネントからエバーにルーティングする方法を教えてください。

は私のコンポーネントテンプレート

<div class="pull-right search-section"> 
    <form class="form-inline search-box" {{action save on="submit"}}> 
     <button type="submit" class="btn"><i class="glyphicon glyphicon-search"></i></button> 
     <div class="form-group"> 
     {{input value=search class="form-control" placeholder="Search anything"}} 
     </div> 
    </form> 
    <a href="#" class="link-advance-search">Advance Search</a> 
</div> 

は今、私は「燃えさし」からコード 輸入エンバー以下でのコンポーネントのjsファイルからルートにデータを送信しようとしていますです。

export default Ember.Component.extend({ 
    save: function() { 
     var search = this.get('search'); 
     console.log(this.sendAction('saveAction',search)); 
    } 
}); 

とコード

import Ember from 'ember'; 
export default Ember.Route.extend({ 
    actions: { 
     saveAction: function(search_string){ 
      alert('fhdishf'); 
     } 
    } 
}); 

次しかし残念ながら何も取得していないと、ルートのjsファイルを取得しようとしています。

ありがとうございます。

+0

クロージャアクションと[ember-route-action-helper](https://github.com/DockYard/ember-route-action-helper)アドオンを使用してください。 – ykaragol

答えて

2

アクションをルートコントローラに送信できます。ルートコントローラは、コントローラがアクションを定義していない場合はルートにバブルします。お使いのテンプレートファイル内

// Component in Template 
{{task-item content=task tasksController=this}} 

// Component Action 
actions: { 
    copyTask: function(){ 
     this.get('tasksController').send('your-action'); 
    } 
} 
2

{{task-item 
    data=model 
    innerActionName=outterActionName 
}} 

物事の燃えさしの方法がダウンし、アクションまでデータです。バックコントローラ/ルータにデータを渡すには、それが(コントローラ/ルータから)、上のアクションを呼び出す行う必要があり

あなたのコンポーネント内のJavaScriptファイル、

actions: { 
    componentActionName(param) { 
    this.sendAction("innerActionName", param); 
    } 
} 

componentActionNameはあなたが置くために必要なものですコンポーネントJSファイル内で定義された関数をトリガーするテンプレートファイルの中にあります。コンポーネントHBSファイル内

<div {{action "componentActionName" param}}>{{param}}</div> 

{{action "componentActionName" param}}は、あなたがコントローラ/ルート、コンポーネントに戻ってパラメータを渡す、とする方法です。

もう一つ

コンポーネントは、単純なコンポーネントべきではない意識周囲の環境を意味し、分離する必要があります。 は、渡されたデータを認識し、アクションとパラメータを適切な場所(ルート)に渡すことによってのみデータ操作を実行できます。

関連する問題