0

我一直在疯狂地想办法让 subnav 在 ember 中正确渲染,请参阅希望 Ember.js 命名的出口仅在点击时显示

我想我可能已经找到了一个解决方案,只是该功能不会触发。

在我的 application_view.coffee 我有以下内容:

Ew.ApplicationView = Ember.View.extend(didInsertElement: ->
  $(".nav").width $(window).width() - 406
  $(".subnav").width $(window).width() - 406
  $(window).resize ->
    $(".nav").width $(window).width() - 406
    $(".subnav").width $(window).width() - 406

  $ ->
    if document.location.href.indexOf('about') > -1
        $("ul").removeClass("sub-nav-list-hide")
        $("ul").addClass("sub-nav-list-show")
)

当我执行

document.location.href.indexOf('about') > -1

在控制台中,我得到正确的响应,真或假取决于 URL 中是否有“关于”。但该功能的其余部分不会执行。不确定我是否缺少关于 jQuery 函数和 Ember 的内容?

4

1 回答 1

1

该函数未触发,因为didInsertElement仅在呈现视图时调用一次,但对于您的用例,您需要在每次路由更改时进行检查。

也就是说,假设您使用的是最新的 ember 版本,您可以currentRouteName在应用程序控制器上观察到。

App.ApplicationController = Ember.ObjectController.extend({
  currentRouteChanged: function() {
    if(this.get('currentRouteName').indexOf('about') > -1) {
      $("ul").removeClass("sub-nav-list-hide");
      $("ul").addClass("sub-nav-list-show");
    }
  }.observes('currentRouteName')
});

希望能帮助到你。

于 2013-08-29T07:11:25.167 回答