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