ember で使用する場合、選択したオプションを select2 コンポーネントに表示するのが困難です。これは私のコントローラーがどのように見えるかです:
AS_ANALYTICS.Exercise = Ember.Object.extend({
id: null,
name: null
});
AS_ANALYTICS.SelectedExercise = Ember.Object.extend({
exercise: null,
changed:function(){
if(this.exercise.id!==null){
}
}.observes('exercise')
});
AS_ANALYTICS.selectedExercise = AS_ANALYTICS.SelectedExercise.create();
AS_ANALYTICS.ExerciseController = Ember.ArrayController.create({
content:[],
setContent:function(exercises){
//each array controller has content property by default
//selects seems to only use this property for some reason
this.set('content',exercises);
if(exercises.length==1){
//SOMETHING IS OFF HERE!
console.log(AS_ANALYTICS.ExerciseController.objectAt(0).get('id'));
AS_ANALYTICS.selectedExercise.set('exercise',AS_ANALYTICS.ExerciseController.objectAt(0));
$('#exerciseId').select2({
width:'300px'
}).select2('val',AS_ANALYTICS.ExerciseController.objectAt(0).get('id'));
}
},
populateExercisesForClient:function(customerId){
var self = this;
jQuery.getJSON(AS.baseURL+'analytics/listCustomerExercisesJson',{"id":customerId}, function(json) {
var exercises = [], i = 0,len = json.length;
for(;i<len;i++){
exercises.push(AS_ANALYTICS.Client.create({"id":json[i].id,"name":json[i].name}));
}
self.setContent(exercises);
});
}
});
populateExercisesForClient を呼び出します。これは、コンテンツを入力する ajax 要求を作成します。select2コンポーネントをクリックすると、ドロップダウンでオプションが強調表示されていることがわかりますが、選択したオプションのテキストではなく、デフォルトで「選択してください...」と表示されます。
私のビューコードは次のとおりです。
AS_ANALYTICS.Select2SelectView = Ember.Select.extend({
prompt: 'Please select...',
classNames: ['input-xlarge'],
didInsertElement: function() {
var elem = this.$();
Ember.run(function() {
Ember.run.scheduleOnce('afterRender', this, function(){
elem.select2({
width:'300px'
});
});
});
},
willDestroyElement: function () {
var elem = this.$();
elem.select2("destroy");
}});
あなたの助けは非常に高く評価されます。ありがとう。
更新: これは私が話していることです。オプションは選択されていますが、「buuda」が提案した選択ビューを使用した後でも、テキストは選択の上に表示されず、同じ問題です!