我更像是一个后端的家伙,试图让它进入前端,特别是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