2016-09-29 6 views
1

テンプレートでは、テキストボックスのような入力コントロールが多数あります。エバーのルートリフレッシュで入力コントロールの内容が消去されない

私はページをリフレッシュしたいので、私は対応するルートのアクションハッシュでthis.refresh();と呼んでいます。ルートがリフレッシュされています(モデルフックが実行されます)。しかし、ユーザーが入力したテキストボックスのテキストは消えません。その後、リフレッシュのポイントは何ですか?

入力コントロールを最初にロードしたときのように表示するにはどうすればよいですか?

答えて

0

モデル/コントローラのプロパティを関連付ける必要があります。モデルのプロパティをモデルのフックとコントローラのプロパティにリセットして、それに応じてsetupControllerをリフレッシュします。それはifeachwithのようなブロックヘルパーでない限り、エンバーは、単一ページのアプリケーションで

全体のポイントは、我々はアプリケーションを設計する必要があるか/ refreshing..Thatのを再描画することなく、値を置き換えます。.. DOMを再描画しません。私見では。

しかし、常にそれを可能にするために、エバーにはハッキーな方法があります。私はこれをお勧めしません。

ルート/

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     return { name: 'kumkan' }; 
    }, 
    actions: { 
     clickRefresh() { 
      this.refresh(); 
     } 
    } 
}); 

コントローラをtest.js \

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    isRefreshed: true, 
    actions: { 
     clickRefreshh() { 
      this.toggleProperty('isRefreshed'); 
      this.send('clickRefresh'); 
     } 
    } 
}); 

をtest.jsここハック一部は

をtest.hbs \

テンプレート、来ます

{{#if isRefreshed}} {{test-comp model=model}} {{else}} {{test-comp model=model}} {{/if}} <button {{action "clickRefreshh"}}> Refresh </button> {{outlet}} 

テンプレート\コンポーネント\テストcomp.hbs

<input type="text" value="Kumkan" /> 
{{input value=model.name}} 
{{yield}} 
1

Route Refreshは再びルートを訪れるようなので、彼らはその後、彼らはモデルの関連するデータを記入する必要があり、あなたのルートモデル

に依存して、あなたの入力フィールドがバインドされているものにしている依存しています。

関連付けられていない場合はクリアされず、関連付けられている場合はモデルのデータで埋められます。

+0

[OK]を..あなたにプールナをありがとうございます。 どうすれば私の要件を達成できますか? –

+0

コントローラ内のプロパティに関連付けられ、setupControllerのプロパティをリセットします。 – Purna

+0

それはまったく可能なああ関連付けていない? –

関連する問題