我想在Notes.Application中构建一个简单的搜索框来搜索我的笔记。我正在寻找这个网站,Ember表格和谷歌,并没有那么多的解决方案。我发现只有两个,他们不适合我的应用程序皱眉。问题是我不知道该怎么做。
这是我的应用:
<script type="text/x-handlebars" data-template-name="index">
<div class="wrap">
<div class="bar">
{{input type="text" class="search" placeholder="Where is my bookmark??" value=search action="query"}}
<div class="bar-buttons">
<button {{action "addNote"}}> NEW </button>
<button> HOME </button>
</div>
</div>
<aside>
<h4 class="all-notes">All Notes {{length}}</h4>
{{#each item in model}}
<li>
{{#link-to 'note' item}} {{item.title}} {{/link-to}}
</li>
{{/each}}
</aside>
{{outlet}}
</div>
</script>
控制器:
Notes.IndexController = Ember.ArrayController.extend ({
search: '',
actions:{
query: function() {
// the current value of the text field
var query = this.get('search');
},
addNote: function () {
this.transitionToRoute('main');
}
}
});
型号:
Notes.Note = DS.Model.extend ({
title: DS.attr('string'),
body: DS.attr('string'),
url: DS.attr('string')
});
Notes.Note.FIXTURES = [
{
id: 1,
title:'hello world',
body: 'ciao ciao ciao ciao',
url: ''
},
{
id: 2,
title: 'javascript frameworks',
body: 'Backbone.js, Ember.js, Knockout.js',
url: '...'
},
{
id: 3,
title: 'Find a job in Berlin',
body: 'Monster, beralinstartupjobs.com',
url: '...'
}
];
但无论如何这仍然是硬编码数据,以后只会是用户动态添加的注释。
任何建议都非常感谢。
答案 0 :(得分:8)
您可以覆盖arrangedContent
的{{1}}属性:
IndexController
在您的模板中使用Notes.IndexController = Ember.ArrayController.extend ({
search: '',
titleFilter: null,
actions:{
query: function() {
// the current value of the text field
var query = this.get('search');
this.set('titleFilter', query);
},
addNote: function () {
this.transitionToRoute('main');
}
},
arrangedContent: function() {
var search = this.get('search');
if (!search) { return this.get('content') }
return this.get('content').filter(function(note) {
return note.get('title').indexOf(search) != -1;
})
}.property('content', 'titleFilter')
});