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

认识到我的问题有点神秘/具体情况,这是我最终所做的,以防有人关心。请注意,一些 API 随后发生了变化。

回想一下,我正在尝试在当前视图中弹出一个 jQuery UI 对话框。Luke Melia 关于这个主题的精彩文章是我最初方法的基础。

在车把中:

{{#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 回答
0

您使用 the{{action}}而不是{{linkTo}}helper 有什么原因吗?{{linkTo}}将生成与助手一起传递的动物的链接。http://emberjs.com/guides/templates/links/

然后,您可以按照 Router API Guides 中的说明定义路由。

于 2013-01-10T17:52:46.723 回答