0

最新のember.jsビルドを使用して、コントローラーアクションを使用してchildViewを作成し、それを現在のビューにプッシュしようとしています。しかし、関連するビューと話す方法がわかりません。

私のsearch.handlebarsで:

<p>Results:</p>
{{#each animal in someResults}}
  <li><a {{action showAnimal animal}}>{{animal.species.commonName}}</a></li>
{{/each}}

App.SearchControllerには、次のものがあります。

showAnimal: function(animal) {
  // Now what?? The below is obviously wrong
  this.animalView = App.AnimalView.create({controller: animal});
  var childView = App.SearchView.createChildView(this.animalView);
  App.SearchView.get('childViews').pushObject(childView);
}

内部から見えるオブジェクトは次のshowAnimalとおりです。

  • animal- いいよ
  • this.container-ここで役立つものは何も表示されません
  • this.target-どうやらルーター?

とにかく、私は困惑しています。助けていただければ幸いです。

4

2 に答える 2

0

ヘルパーの{{action}}代わりに使用している理由はありますか?ヘルパーと一緒に渡された動物へのリンクを生成します。http://emberjs.com/guides/templates/links/{{linkTo}}{{linkTo}}

次に、ルーターAPIガイドの説明に従ってルートを定義できます。

于 2013-01-10T17:52:46.723 に答える
0

私の質問を認識することは少し難解で/状況に固有でした、これが誰かが気にかけている場合に備えて私が最終的にしたことです。その後、一部のAPIが変更されていることに注意してください。

現在のビューでjQueryUIダイアログをポップアップ表示しようとしていることを思い出してください。このトピックに関するLukeMeliaのすばらしい記事は、私の最初のアプローチの基礎でした。

ハンドルバー内:

{{#each animal in someResults}}
  <li><a {{action showAnimal animal target="view" href=true}}>{{animal.species.commonName}} </a></li>
{{/each}}

次に、App.SearchViewで:

App.SearchView = Ember.View.extend({
  templateName: 'my-appname/~templates/search',
  showAnimal: function(animal) {
    animalDialog = App.AnimalView.create()
    animalDialog.set('context', animal);
    animalDialog.append();
  }
});

完全を期すために、ここにAnimalViewがあります。

App.AnimalView = JQ.Dialog.extend({
  templateName: 'my-appname/~templates/animal',
  autoOpen: true,
  modal: true,
  closeText: "Ok"
});
于 2013-01-15T16:31:13.287 に答える