2017-02-21 10 views
-2

ember jsの新機能です。私は自分の魔法のアプリケーションのいくつかの問題に直面しています。私は(一部のコードは以下のとおりである)以下のように私の燃えさしアプリケーション内のいくつかのファイルがあります: -Ajaxの呼び出しでember jsのロードが発生する

sample.hbs

<div> 
    <div> 
    {{text-field id="countryid" type="text"}} 
    </div> 
    {{state-component model=model}} 
    </div> 

状態-component.hbs

{{#if isFlag}} 
    <div> 
    {{text-field id="stateid" type="text"}} 
    </div> 
    {{else}} 
    {{/if}} 

状態コンポーネント.js

var flag; 
    export default Ember.Component.extend({ 
    isFlag: Ember.computed('flag', function() { 
    flag = this.get('model').get('flag'); 
    return Ember.isEqual(flag, 'true'); 
}) 
    }) 

sample.jsページのロードにここ

export default Ember.Route.extend({ 
    model(){ 
    return info.create({"flag": ""}) 
    }}); 

    afterModel(){ 
    Ember.$.ajax({  
    url: `${ENV.host}/retrieveInfo`, 
    type: 'POST', 
    data: `id=geoid`, 
    success: (data) => { 
     this.modelFor('sample').setProperties({ 
      "flag": data.flag 
     }); 
    } 
    } 

retrieveInfo AJAX呼び出しは、フラグがWebサービスの呼び出しから返される&起こります。フラグの値に基づいて、つまりtrueの場合、状態テキストボックスのみを表示する必要があります。しかし、最初と次のAJAX呼び出しがレンダリングされるので、私はページの読み込み時にフラグ値を持っていません。すなわち、状態コンポーネントがレンダリングされるとき、フラグ値を含まない。私はwillRender()、didRender()のような異なるイベントでajax呼び出しを移動しました。しかし、それは役に立たなかった。誰かが解決策を与えることができますか?私は私の状態コンポーネントのフラグ値を得ることができるように私はアヤックスコールを置くことができますか?

+0

問題のタイトルをより良いものに変更してください。 –

+0

私はあなたが理解できるように私の質問を変更しました。見ていただけますか? – Gurumurthy

答えて

0

いつもあなたが試したことをコードで質問してください。可能であればember-twiddleの再生が含まれています。component1という名前のコンポーネントを作成するには、-を含める必要があります。

公式ember-guides

に良い読み物を与えるには、サンプルのルートのモデルフックでそれを定義し、それがsettings.hbsで利用できるようになります。

model(){ 
    return Ember.$.getJSON('url'); 
} 

あなたはmy-componentにモデルを送信することができ、それがmy-componentにアクセスできるようになります。

{{my-component model=model }} 
関連する問題