2013-08-21 24 views
11

Tôi có một hộp chọn mà tôi đang điền bằng cách loại trực tiếp. Khi người dùng đã thực hiện một số lựa chọn trên biểu mẫu, tôi muốn đặt lại hộp chọn đó về giá trị mặc định được đặt trong số optionsCaption. Làm thế nào bạn sẽ đi về việc này? Tôi đã cố gắng để đặt nó vào một chuỗi rỗng tuy nhiên điều này lá nó với giá trị mà người dùng đã chọn.Knockout.js đặt lại giá trị của một lựa chọn về giá trị mặc định của nó

Đây là mã của tôi:

<select data-bind="options: components, optionsValue: 'Component', optionsText: 'Component', optionsCaption: 'Choose Component', value: component"></select> 

Đây là js:

self.components = ko.observableArray(["Component":"1234", "Component":"5678"]); 
self.component = ko.observable(); 

Những gì tôi sau đó cố gắng làm trong phần khác là:

self.component(""); 

Tuy nhiên điều này dường như không có hiệu lực.

EDIT: Đây là một fiddle http://jsfiddle.net/BASY4/

+0

'self.component (" ");' hoạt động tốt cho tôi: http://jsfiddle.net/8sku5/. Bạn có thể vui lòng tạo jsfiddle của bạn để tái tạo vấn đề của bạn không? – nemesv

+0

Đã thêm fiddle ngay bây giờ –

Trả lời

22

Sử dụng

self.component(null);

thay vì

self.component("");

Workingjsfiddle.

Các giá trị khác chỉ được phép nếu chúng nằm trong danh sách nguồn (ở đây self.components) nếu không giá trị ràng buộc được đặt lại ngay lập tức.

9

Tùy thuộc vào phiên bản knockoutj bạn sử dụng, sẽ thay đổi câu trả lời cho câu hỏi này.

Nếu bạn đang sử dụng phiên bản 2.2.1 như jsfiddle đang sử dụng, thì bạn sẽ cần phải sử dụng;

self.component(null); 
// or 
self.component(undefined); 

Nếu bạn đã thay đổi phiên bản này đến phiên bản mới nhất 2.3.0 sau đó bạn thực sự có thể sử dụng;

self.component(null); 
// or 
self.component(undefined); 
// OR 
self.component('');