這是我的第一個Ember.js應用程序。我發現的所有Ember的示例和教程都是單個控制器和單個模型或具有子模型的單個模型。 然而,這個應用程序並排放置兩個模型(公司和用戶)到一個控制器(登錄)。然而它不能很好地工作。Ember.js:如何在單個控制器中設置多個Ember.Select的默認選項?
其jsbin.com代碼爲:jsbin.com/cirah
我的設計是:登錄控制器沒有一個定義的模型,但企業和用戶的兩個數組。兩者都有一個_selid來指示當前的選擇。
window.App = Ember.Application.create({});
App.ApplicationStore = DS.Store.extend({
adapter: 'App.ApplicationAdapter',
});
App.ApplicationAdapter = DS.RESTAdapter.extend({
host: 'http://emberjs.azurewebsites.net',
headers: {
"Accept": "application/json",
}
});
App.Company = DS.Model.extend({
company: DS.attr('string')
});
App.User = DS.Model.extend({
userName: DS.attr('string'),
passwordHash: DS.attr('string'),
});
App.Router.map(function() {
this.resource("login", { path: '/login' });
});
App.IndexRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('login');
},
});
App.LoginRoute = Ember.Route.extend({
setupController: function (controller, model) {
var store = this.get('store');
controller.set('companies', store.find('company'));
controller.set('company_selid', 2);
controller.set('users', store.find('user'));
controller.set('user_selid', 3);
},
});
App.LoginController = Ember.ObjectController.extend({
companies: null,
company_selid: '2',
users: null,
user_selid: '3',
passwordHash: '',
actions: {
login: function() {
alert('login clicked');
},
},
});
登錄模板包含兩個數組的Ember.Select(s)。
<div class="input-group">
<label for="company" class="input-group-addon ">Company:</label>
{{view Ember.Select
class="form-control"
content=companies
optionValuePath="content.id"
optionLabelPath="content.company"
value="company_selid"
selectionBinding="company_selid"}}
</div>
<div class="input-group">
<label for="userName" class="input-group-addon">User Name:</label>
{{view Ember.Select
class="form-control"
content=users
optionValuePath="content.id"
optionLabelPath="content.userName"
value=user_selid
selection=user_selid
}}
</div>
服務器端返回:
http://emberjs.azurewebsites.net/companies?format=json
{"companies":[
{"id":1,"company":"ABC Company"},
{"id":2,"company":"XYZ Company"}
]}
http://emberjs.azurewebsites.net/users?format=json
{"users":[
{"id":101,"userName":"Aaron","passwordHash":""},
{"id":102,"userName":"Brian","passwordHash":""},
{"id":103,"userName":"Corey","passwordHash":""},
{"id":104,"userName":"David","passwordHash":""}
]}
我的問題是:
Q1:什麼是使用單個控制器中嵌入多個模型的Ember的最佳做法?我想要加載兩個arrys,我應該在登錄模式中使用Ember.RSVP嗎?或者我應該使用ContainerView? Q2:在我的代碼中,兩個Ember.Select的默認選項不起作用,它總是第一個選項,即使我在登錄控制器和setupController中設置了它們兩次。如何解決它?
感謝
謝謝,@tikotzky。它完美地解決了我的問題。 – user2006633 2014-08-31 16:51:46