ハードコーディングする代わりに、Ember.Select 値を使用して JSON をフィルター処理したいと考えています。これが私のApp.jsです
App = Ember.Application.create({});
App.IndexRoute = Ember.Route.extend({
renderTemplate : function(controller) {
this.render('MyApp', {
controller : controller
});
},
model : function() {
return App.MyTemplateModel.find();
}
});
App.IndexController = Ember.ArrayController.extend({
filteredContent : Ember.computed.oneWay("content"),
last : function() {
var filtered = this.get('content').filterProperty('last_name', "Solow");
this.set("filteredContent", filtered);
}
});
App.MyTemplateModel = Ember.Model.extend({
id : Ember.attr(),
last_name : Ember.attr(),
first_name : Ember.attr(),
suffix : Ember.attr(),
expiration : Ember.attr()
});
App.controller = Ember.Object.create({
selectedProgrammer : null,
content : [Ember.Object.create({
last_name : "Solow",
id : 1
}), Ember.Object.create({
last_name : "Tom",
id : 2
})]
});
App.MyTemplateModel.url = "http://ankur1.local/index.php/api/example/users/";
App.MyTemplateModel.adapter = Ember.RESTAdapter.create();
var existing = App.MyTemplateModel.find();
App.MyTemplateModel.camelizeKeys = true;
行では、
var filtered = this.get('content').filterProperty('last_name', "Solow");
「Solow」をハーコーディングしていますが、Ember.Select 値を使用したいです。
これをやってみたのですが、
var selectedProgrammer = App.controller.get("selectedProgrammer");
var filtered = this.get('content').filterProperty('lastName', App.controller.get('selectedProgrammer'));
this.set("filteredContent", filtered);
しかし、それは何もしません & さらに、これが私が HTML で行っていることです。
<script type="text/x-handlebars" data-template-name="MyApp">
{{#each item in filteredContent }}
<tr><td>
{{id}} <p> {{item.first_name}} {{item.expiration}}</p>
</td></tr>
{{/each}}
<button {{action last}}>filter</button>
{{view Ember.Select
contentBinding="App.controller.content"
optionValuePath="content.id"
optionLabelPath="content.last_name"
selectionBinding="App.controller.selectedProgrammer"}}
</script>
さらに、ここに JSON のサンプルがあります。http://pastebin.com/7dyNQi4K
どこが間違っているか、またはどのような変更を加える必要があるか?