2013-06-25 18 views
8

Tôi có chế độ xem Ember.Select, làm cách nào để thêm/liên kết thuộc tính bị vô hiệu với thẻ tùy chọn (KHÔNG chọn toàn bộ hộp chọn).Cách thêm thuộc tính "Đã tắt" vào các tùy chọn trong Ember.Select

nghĩa là tôi rất muốn đạt được kết quả sau.

<select> 
    <option value="1" disabled>I am a disabled option</option> 
    <option value="2">Im selectable</option> 
</select> 
+0

Điều này có giúp ích gì không ...http: //stackoverflow.com/questions/11457206/emberjs-how-to-disable-ember-select – PSL

+0

Rất tiếc, điều đó sẽ vô hiệu hóa toàn bộ hộp chọn. Tôi muốn vô hiệu hóa chỉ một số tùy chọn trong hộp chọn. – jennas

Trả lời

13

Quan điểm Ember.Select không làm điều này ra khỏi hộp. Bạn sẽ cần phải thêm một thuộc tính tùy chỉnh ràng buộc cho disabled và thuộc tính được tính tương ứng để cho Ember biết cách tìm nó.

Cách tiếp cận đơn giản là thêm thuộc tính đã tắt vào mục nội dung/dữ liệu được sử dụng để hiển thị lựa chọn.

App.ApplicationController = Ember.Controller.extend({ 
    choices: function() { 
    return [ 
     Ember.Object.create({firstName: "Lorem", id: 1}), 
     Ember.Object.create({firstName: "Ipsum", id: 2, disabled: true}), 
     Ember.Object.create({firstName: "Dolor", id: 3}), 
     Ember.Object.create({firstName: "Sit", id: 4}), 
     Ember.Object.create({firstName: "Amet", id: 5}) 
    ]; 
    }.property() 
}); 

và mở lại hoặc mở rộng tầm nhìn Ember.SelectOption thêm disabled thuộc tính và tài sản tính.

Ember.SelectOption.reopen({ 
    attributeBindings: ['value', 'selected', 'disabled'], 

    disabled: function() { 
    var content = this.get('content'); 
    return content.disabled || false; 
    }.property('content'), 

}); 

Đây là số đang hoạt động jsbin. Lưu ý rằng tùy chọn ipsum bị tắt.

+0

Cảm ơn bạn. Hy vọng rằng điều này hoạt động theo cách của nó vào lõi một ngày;) – jennas

+0

Tôi thích cách tiếp cận này, nhưng bất kỳ ý tưởng làm thế nào người ta có thể vượt qua trong các thuộc tính dữ liệu yêu cầu tên gạch nối? – sbauch

+0

Tôi đã sử dụng '.property ('content.disabled')' thay vì ''property ('content')', nhưng nếu không thì nó hoạt động tốt. – sblair

2

Bạn có thể xử lý nó trong didInsertElement móc trong giao diện tùy chỉnh Ember.Select của bạn ..

didInsertElement: function() { 
    this.$('option[value="1"]').attr('disabled', true); 
} 
+1

không thực sự là cách thức ember. bạn nên có các thuộc tính xử lý ràng buộc cho dữ liệu của mình thay thế. –

Các vấn đề liên quan