我更像是一個後端的傢伙,試圖讓它進入前端,特別是Ember。我已經創建了一個API,現在我試圖創建幾乎像自動完成搜索(類似於Angulars filter | ngModel)。這裏是我的API:過濾一個餘燼模型
{
data: [
{
id: 6,
name: "Alexandrine Skiles",
links: [
{
rel: "self",
uri: "/api/v1/address-book/alexandrine-skiles"
}
]
},
{
id: 33,
name: "Ally Johns",
links: [
{
rel: "self",
uri: "/api/v1/address-book/ally-johns"
}
]
}
]
}
這裏是我的路線:
export default Ember.Route.extend({
model: function(){
var adapter = AddressBookAdapter.create();
var companies = adapter.findAll();
return companies;
}
});
這裏是適配器:
export default Ember.Object.extend({
findAll: function(){
return ajax('http://localhost:8000/api/v1/address-book/companies')
.then(function(response){
return response.data;
});
}
});
這裏是控制器:
export default Ember.ArrayController.extend({
searchKeyword: null,
searchResults: function(){
var searchText = this.get('searchText');
if(! searchText) return;
var adapter = AddressBookAdapter.create();
var companies = adapter.findAll();
var regex = new RegExp(searchText, 'i');
return companies.then(function(data){
return data.filter(function(company){
return company.name.match(regex);
});
});
}.property('searchText')
});
這裏是html:
{{input type="text" value=searchText class="form-control" id="inputContactSearch" }}
{{#if searchResults}}
{{#each searchResult in searchResults}}
<tr>
<td>{{searchRe}}</td>
</tr>
{{/each}}
{{else}}
{{#each m in model}}
<tr>
<td><a href="{{m.links.uri}}">{{m.name}}</a></td>
</tr>
{{/each}}
{{/if}}
現在我知道我的手柄條的設置方式並不是If和Else語句中最好的。我只是想讓它工作我覺得我非常接近我得到的錯誤,每個循環需要是一個數組而不是對象。但是Model不是一個對象而是數組,但它仍然可以正確地循環它。這是這種方式去解決這個問題,或者我是完全錯誤的。是否只有像Angular這樣的直線模型過濾器,或者這種方式仍然可行。在此先感謝
您是否停用了[原型擴展名]的(http://guides.emberjs.com/v1.10.0/configuring-ember/disabling-prototype-extensions/)? – MilkyWayJoe
@MilkyWayJoe我不確定這到底意味着什麼 – ThreeAccents
如果你在控制檯輸入'Ember.EXTEND_PROTOTYPES',結果是'true'還是'false'? – MilkyWayJoe