我一直在疯狂试图找到一种方法来让一个subnav在ember中正确渲染,请参阅Want Ember.js named outlet to only display on click
我想我可能找到了一个解决方案,但功能不会触发。
在我的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中是否有'about'。但是函数的其余部分将不会执行。不确定我是否缺少关于jQuery函数和Ember的东西?
答案 0 :(得分: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')
});
希望它有所帮助。