![](/img/trans.png)
[英]Error with Ember.js + Rails - undefined 'Ember.Router.extend'
[英]Ember.js Router v2 dynamic slug is null
在以下示例中,使用新的Router v2 API,炭燼應用程序的行為符合預期,但有一個例外。 將鼠標懸停在動態創建的鏈接上時,使用已注冊的#linkTo Handlebars幫助器,URL中的用戶ID為null。
單擊鏈接將轉換為正確的狀態,但URL仍為“空”。
是什么賦予了? 我缺少一個簡單的約定嗎?
App = Ember.Application.create({
autoinit: false,
rootElement: "body"
});
App.Store = DS.Store.extend({
revision: 11,
adapter: DS.RESTAdapter.create({})
});
App.User = DS.Model.extend({
email: DS.attr('string'),
username: DS.attr('string')
});
App.ApplicationView = Ember.View.extend({
templateName: 'application'
});
App.ApplicationController = Ember.Controller.extend();
App.HomeController = Ember.Controller.extend({
});
App.UserController = Ember.ObjectController.extend({
});
App.Router.map(function(match) {
match("/").to("home");
match("/users/:user_id").to("user");
});
App.HomeRoute = Ember.Route.extend({
setupController: function(controller) {
controller.set('users', App.User.find());
}
});
App.UserRoute = Ember.Route.extend({
setupControllers: function(controller, user) {
controller.set('content', user);
}
});
App.initialize();
<script type="text/x-handlebars" data-template-name="home">
{{#if users.isLoaded}}
{{#each item in users}}
<div class="user">
{{item.email}}
</div>
<div class="user">
{{#linkTo user item}}
{{item.username}}
{{/linkTo}}
</div>
{{/each}}
{{else}}
<p class="loading">Loading Users</p>
{{/if}}
</script>
<script type="text/x-handlebars" data-template-name="user">
<div class="user">
<h3>{{username}}</h3>
<p class="email">{{email}}</p>
</div>
</script>
我用您的代碼創建了一個小提琴,它似乎運行良好: JS Fiddle示例
我假設API返回的模型類似於我定義App.User.FIXTURES
。 讓我知道是否不正確。
我正在使用EmberJS版本:v1.0.0-pre.2-291-g4785901,最后一次提交:4785901(2013-01-05 18:57:16 +0100),您可以在這里找到它。 嘗試查看此版本的Ember是否可以解決您的問題。
另外,為您提供信息,他們最近再次更新了EmberJS Routing,並且在路由器中的匹配不再起作用。 您可以在此處查看新格式: EmberJS.com定義路線 。 我的“進行中” Ember-JS-Example與您的路由類似,但是已更新,如果您願意,可以將其用作示例。 來自EmberJS.com的新樣式:
App.Router.map(function() {
this.route("about", { path: "/about" });
this.route("favorites", { path: "/favs" });
});
實際上,這可能是對原始問題的最完整答案:
App.Store = DS.Store.extend({
revision: 11,
adapter: DS.RESTAdapter.create({
serializer: DS.JSONSerializer.create({
primaryKey: function(type) {
return '_id';
}
})
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.