1

ember の新しいネストされたルートについてよく読んだ後、トランジションが機能し、アウトレットが置き換えられました。悲しいことに、まだ問題があります。メイン ナビゲーションとサイドバーの 2 つのレベルのナビゲーションがあります。すべてのリンクは {{link-to}} で生成されます。サイドバーのサブアイテムをクリックすると、アイテムは Chrome で「アクティブな」CSS クラスを取得しません (Firefox は動作します)。メインのナビゲーションで同じリンクをクリックすると、サイドバーのリンクがアクティブになりません。

ここで、「ユーザー」の下で私の問題を確認できます --> http://jsbin.com/omAZiZe/1/edit (サイドバーを表示するには、ナビゲーションの通常のデスクトップ バージョンを表示する必要があります) 「ユーザー」および「ユーザー ユーバーシヒト」 " には同一のリンクがありますが、アクティブなのは 1 つだけです。また、Firefox にはブラウザの問題があり、サイドバーの Opera サブアイテムがアクティブになります。Chrome では、これは機能しません。どうすればこの問題を解決できますか?

ここに私のバージョン:

Ember      : 1.1.3+pre.5a35fc76
Ember Data : 1.0.0-beta.4+canary.c15b8f80
Handlebars : 1.0.0
jQuery     : 1.10.2

と私のコード:

応用:

    App.Router.map(function(){
    this.resource("users",function() {
        this.route("user", {path: "users/:user_id"});
        this.route("new");
    });

    App.UsersIndexRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render("sidebar", {into: 'application' , outlet: "sidebar",  controller: "users.index"  });
        this.render("userslist", {outlet: "users", controller: "users.index"});
    },
    model: function() {
        return users;
    }
    });

    App.UsersUserRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render("sidebar", {into: 'application' , outlet: "sidebar",  controller: "users.index"  });
        this.render("users/user", {outlet: "users", controller: "user"});
    },
    model: function() {
         return users[0];
    }
    });

    App.UsersNewRoute = Ember.Route.extend({
    renderTemplate: function() {
        this.render("sidebar", {into: 'application' , outlet: "sidebar",  controller: "users.index"  });
        this.render("users/new", {outlet: "users", controller: "users"});
    },
    model: function() {

    }
    });
//spezieller Array Controller
App.UsersIndexController = Ember.ArrayController.extend({
     navigation: [
               {controller: "users.index", text: "User Übersicht" , hint: "Alle User als Liste", icon: "glyphicon glyphicon-user"},
               {controller: "users.new", text: "Neuen User anlegen" , hint: "Hier können neue User angelegt werden", icon: "glyphicon glyphicon-plus-sign"}
              ] 
});

索引.html

 <script type="text/x-handlebars" data-template-name ="users">
        {{outlet users}}
    </script>

    <script type="text/x-handlebars" data-template-name ="userslist">
        <div class="row">
          <div class="col-lg-12">
            <h1>Users</h1>

                    <table class="table table-hover">
                        <thead>
                            <tr>
                                <th>Id</th>
                                <th>Username</th>
                                <th>Vorname</th>
                                <th>Nachname</th>
                                <th>E-Mail</th>
                                <th>Rolle</th>
                                <th></th>
                            </tr>
                        <thead>
                        <tbody>
                             {{#each}}
                             <tr>
                                <td>{{id}}</td>
                                <td>{{username}}</td>
                                <td>{{prename}}</td>
                                <td>{{surname}}</td>
                                <td>{{email}}</td>
                                <td>{{role}}</td>
                                <td> {{#link-to "users.user" this }}<span class="glyphicon glyphicon-pencil"></span>{{/link-to}} <span class="glyphicon glyphicon-trash"></span></td>
                            </tr>
                           {{/each}}

                        </tbody>
                    </table>      
                    {{outlet}}  
          </div>
        </div><!-- /.row -->
    </script>

<script type="text/x-handlebars" data-template-name="users/user">
    <div class="row">
      <div class="col-lg-12">
        <h1>User <small>{{username}}</small></h1>
            {{email}}

      </div>
    </div><!-- /.row -->
</script>

<script type="text/x-handlebars" data-template-name="sidebar">
    <ul class="nav navbar-nav side-nav">
    {{#each item in navigation}}
        <li> 
            {{#link-to item.controller}}
                {{#if item.icon}}
                    <span {{bind-attr class="item.icon"}} ></span>
                {{/if}}
                {{item.text}}
            {{/link-to}}
        </li>
    {{/each}}
    </ul> 
</script>
4

2 に答える 2

0

実際の最初の問題はcssにあります。サイドバーはクラスを受け取りactiveますが、UI は変わりません。

以下を追加すると、アクティブなときに背景色が黒のサイドバー項目が表示されます。

.navbar-inverse .navbar-nav>li>a.active {
  background-color: #080808;
}

Neuen User anlegenこの後、アイテムをクリックすると、 と の両方Neuen User anlegenUser Übersichtアクティブなクラスがあり、両方の背景が黒くなることがわかります。Neuen User anlegenリンクには が含まれているため、これは予想される動作であり、link-to "users"クリックするNeuen User anlegenと "users.new" ルートに移動し、"users.new" ルートにいる場合は、"users" ルートにもいることになります。したがって、あなたのlink-to "users"をに変更するだけです:link-to "users.index"UsersIndexController

App.UsersIndexController = Ember.ArrayController.extend({
     navigation: [
         {controller: "users.index", text: "User Übersicht" , hint: "Alle User als Liste", icon: "glyphicon glyphicon-user", },
         {controller: "users.new", text: "Neuen User anlegen" , hint: "Hier können neue User angelegt werden", icon: "glyphicon glyphicon-plus-sign"}
     ] 
});

これは、この機能を備えた更新された jsbin ですhttp://jsbin.com/omAZiZe/4/edit

于 2013-11-13T01:12:31.527 に答える