1

総Noobの質問はこちら。単純なことをお詫びします。答えを探して、ここにある何百もの Ember タグ付きの投稿をざっと調べました。しかし、それはあまりにも原始的すぎて、以前に尋ねることはできなかったようです...

私はEmberでゼロから始めています。Andy Matthews の EmberTweets チュートリアルを実行しましたが、うまくいきました。私はそれを私の最初の Ember アプリの基礎として使用しようとしていますが、これは非常に単純です。しかし、私は最も基本的な手順にこだわっています。私は機能しているコントローラーを持っているようで、新しいオブジェクトを正常に追加しているようです。しかし、私の人生では、それらのオブジェクトのプロパティをレンダリングするビューを取得することはできません。基本的なビューはレンダリングされますが、コントローラーからのデータはレンダリングされません。単純な#each. どのブラウザ コンソールでもエラーは発生しません。

フィドルはこちらです。

この例では、3 つの異なる方法でコントローラーにオブジェクトを追加してみて、それが役立つかどうかを確認しました。コンテンツ配列を検査するか、FilterMenus.MenusController.content.objectAt(2).get('menu_name') などを使用して、コンソールからオブジェクトのプロパティに正常にアクセスできます。どうやら、データは本来あるべき場所にあるようです。

しかし、次のようなプロパティをレンダリングしようとすると、テンプレートにはまだ何も表示されません{{menu_name}}。私は何を間違っていますか?

4

3 に答える 3

6

他の回答で述べられているように、アプリをグローバル変数として宣言する必要があります(を省略してvar)。

その上、あなたはあなたのメソッドのthis._super()中で呼び出していません。これは正しくセットアップするために必要なので、変更すると機能します。FilterMenus.menusControllerinitEmber.ArrayControllercontent

これらの2つの問題に加えて、コードは正常に見えます。これが実用的なフィドルです:http://jsfiddle.net/pangratz666/HPkHt/

于 2012-07-17T04:34:26.673 に答える
2

あなたのコードに関する Ember の大きな問題は、あなたApplicationが として定義されているvarため、テンプレートからアクセスできないことです。varキーワードを削除すると役立ちました。

何らかの理由で、それでは十分ではなく、追加する必要がありました

this.set('content', []);

それを機能させるためのinit関数の最初の行として。これまでにこれを行う必要がなかったため、jsFiddle が何かを行っているかどうかはわかりません。誰かがこれに光を当てているなら、私はそれを聞きたいと思っています.

于 2012-07-17T02:07:44.607 に答える
1

次のことを試してください。

  1. FilterMenus 宣言から「var」を削除します。

    FilterMenus = Em.Application.create();
    
  2. の実装を次のように変更menusController.addMenuします。

    addMenu: function(menu) {
        this.content.push(menu);
    },
    

これにより、「国を選択」と説明段落の後に 2 つのメニュー名が表示されます。

countries
countries2

Ember は何が何だかわからないようthis.pushObject(menu);だった。ただし、コントローラーのコンテンツ配列に直接プッシュすることは常に機能します。

于 2012-07-17T03:14:14.740 に答える