2013-06-27 34 views
2

我已經準備好了這個jsfiddle。這是代碼:鏈接路由到單個對象,無編號

App = Ember.Application.create(); 

App.Store = DS.Store.extend({ 
    revision: 13, 
    adapter: 'DS.FixtureAdapter' 
}); 

App.Router.map(function() { 
    // put your routes here 
}); 

App.User = DS.Model.extend({ 
    name : DS.attr('string'), 
    email : DS.attr('string'), 
}); 

App.User.FIXTURES = [{ id: 'me', name: 'Max Smith', email: '[email protected]' }]; 

App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
     return App.User.find(); 
    } 
}); 

這是模板:

<script type="text/x-handlebars" data-template-name="index"> 
    {{#each model}} 
    <div class="form_labels_wrapper"> 
     <dl class="dl-horizontal"> 
     <dt>Id:</dt>    <dd>{{id}}</dd> 
     <dt>Name:</dt>    <dd>{{name}}</dd> 
     <dt>Email:</dt>   <dd>{{email}}</dd> 
     </dl> 
    {{/each}} 
    </div> 
    </script> 

我想要做的是顯示單個用戶的數據。 opbject沒有id(它代表已登錄的用戶,這是與會話相關的,並且沒有可見的用於ember的id)。相反,我不得不創建一個用戶列表(使用一個用戶),並給它一個僞造的ID(me)。這在我的應用程序中沒有任何意義。

我想用這個模板,但我不知道如何爲這個配置燼:

<script type="text/x-handlebars" data-template-name="index"> 
    <div class="form_labels_wrapper"> 
     <dl class="dl-horizontal"> 
     <dt>Name:</dt>    <dd>{{name}}</dd> 
     <dt>Email:</dt>   <dd>{{email}}</dd> 
     </dl> 
    </div> 
    </script> 

有了這個燈具:

App.User.FIXTURES = { name: 'Max Smith', email: '[email protected]' }; 

注意,這是一個單一的元素,而且我沒有循環使用#each這些模型,因爲這不應該是一個列表:只有一個元素。

Ember拒絕接受這個。我能做些什麼才能使這個工作?

回答

1

您可以從model鉤子返回記錄數組,因此ember會爲其生成一個ArrayController,這意味着它的content是一個數組。

更改model掛鉤返回單個記錄。例如使用me作爲id。

App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
     return App.User.find('me'); 
    } 
}); 

然後您的模板工作。查看更新的jsfiddle

+0

謝謝,雖然不完全是我想要的。我的要求是'api/me',服務器回覆登錄用戶的數據。我將不得不提供一個新的API端點'api/users/me'(幸運的是我可以改變服務器端)。這很尷尬,因爲我只*擁有'我'用戶。但是慢慢地,我開始相信,用燼來做這件事是不可能的。似乎燼真的需要做「找到所有」,或者「用ID查找對象」。這是不可能告訴燼:「在這裏你有一個對象,只有一種,它沒有身份證,但這是很好的」。 – dangonfast