2014-04-11 34 views
1

我正在使用EmberJs 1.4版。當我點擊該路線的鏈接時,爲什麼網址沒有更新

當我點擊其中一個鏈接時,我希望網址包含所選小部件的ID,但沒有任何內容出現,當我查看路徑模型鉤子中的params參數時,它沒有任何屬性,我期望身份證是其屬性之一,所以有人可以幫助我瞭解我錯過了什麼?

換句話說,我所期望的URL成爲awesome.html#/部件/ 5,但它始終是awesome.html#/部件

謝謝!

這是我燼代碼:

window.Awesome = Ember.Application.create(); 

Awesome.Router.map(function() { 
    this.resource("awesome", {path: "/"}, function(){ 
     this.route('login'); 
    }); 
    this.resource("widgets", function() { 
     this.resource('widget', { path: '/:widgetId' }, function() { 
      this.route('general', { path: 'info' }); 
      this.route('configuration'); 
      this.route('operations'); 
     }) 
    }); 
}); 


Awesome.WidgetsRoute = Awesome.AuthenticationRoute.extend({ 
    model: function(){ 
     //TODO: Call a service to get the model. 
     return { widgets: [{ widgetId: 1, widgetName: "Great Widget" }, { widgetId: 2, widgetName: "Fantastic Widget" }, { widgetId: 3, widgetName: "Brutal Widget" }] }; 
    } 
}); 

Awesome.WidgetIndexRoute = Awesome.AuthenticationRoute.extend({ 
    model: function (params) { 
     var receivedWidgetId = params.widgetId; 
     return { widgetName: "Hardcoded Widget", widgetId: receivedWidgetId }; 
    } 
}); 

這些都是模板:

<script type="text/x-handlebars" data-template-name="widgets"> 
    <section class="span3 left-section"> 
     <div class="btn-group-vertical btn-group-justified registration-actions-menu"> 
      <button id="createNewWidget" class="btn btn-link">Create New Widget</button> 
      <button id="joinWidgetTeam" class="btn btn-link">Join Widget Team</button> 
     </div> 
     <div class="registered-widgets-menu"> 
      <div class="btn-group-vertical"> 
       {{#each widget in widgets}} 
        {{#link-to 'widget' widget class="btn btn-link"}}{{widget.widgetName}}{{/link-to}} 
       {{/each}} 
      </div> 
     </div> 
    </section> 
    <section class="span8"> 
     {{outlet}} 
    </section> 
</script> 

<script type="text/x-handlebars" data-template-name="widget"> 
    <div id="widgetOptions"> 
     <!-- TODO: Change the anchors for handlebars link-to helpers. --> 
     <h1>{{widgetName}}</h1> <h5>{{widgetId}}</h5> 
     <ul id="widgetNavigation"> 
      <li><a href="#">Widget Info</a></li> 
      <li><a href="#">Widget Configuration</a></li> 
      <li><a href="#">Widget Operations</a></li> 
     </ul> 
    </div> 
    <div id="widgetContent"> 
     <!-- TODO: Design some awesome widget content. --> 
     Some awesome widget content 
    </div> 
</script> 

我也有從其他途徑繼承的認證途徑。即使我不相信它與這個問題有關,我會加入以防萬一我錯了。

Awesome.AuthenticationRoute = Ember.Route.extend({ 
    beforeModel: function(transition){ 
     if(!Awesome.get('loggedUser')){ 
      this.redirectToLogin(transition); 
     } 
    }, 

    redirectToLogin: function(transition) { 
     var loginController = this.controllerFor('awesome.login'); 
     loginController.set('attemptedTransition', transition); 
     this.transitionTo('awesome.login'); 
    } 
}); 

回答

0

看起來它是完全的工作對我來說,當你點擊小部件

http://emberjs.jsbin.com/mohex/1

此外,它看起來像你混了WidgetIndexRoute和WidgetRoute之一。該widget資源應顯示這樣的(雖然這是無關的,你所描述的問題)

Awesome.WidgetRoute = Awesome.AuthenticationRoute.extend({ 
    model: function (params) { 
     var receivedWidgetId = params.widgetId; 
     return { widgetName: "Hardcoded Widget", widgetId: receivedWidgetId }; 
    } 
}); 
+0

我發誓,我是用「WidgetRoute」前後,直到我說了指數不會到那裏,我一直嘗試了很多東西,我對路線中的不同選項感到困惑,因爲我不知道我在什麼點打破了它。回到一個非常舊的版本,從路由名稱中刪除了「索引」部分,不僅URL正確,而且這次確實執行了模型掛鉤。我決心成爲精通燼,但它是讓我瘋狂:(謝謝你! –

相關問題