2012-01-30 24 views
10

Tôi đang sử dụng tay lái trong ứng dụng đường ray backbone.js và tôi có trường Boolean Tôi đang điền bằng một hộp kiểm.sử dụng tay lái bindAttr cho hộp kiểm

Khi tôi tải trang chỉnh sửa, hình thức được phổ biến với những nội dung từ máy chủ JSON cái gì đó như

 
{id:3,user:'test',checkbox:1} 

tại ở dạng tay lái của tôi, tôi muốn thể hiện rằng hộp kiểm là 1.

 
< input type="checkbox" name="checkbox" value="1" {{#if checkbox}} {{bindAttr checkbox checked="isSelected"}}{{/if}} > 

nhưng điều này không trả lại hộp kiểm đã chọn. Tôi thực sự muốn chỉ có thể nói if checkbox==1, nhưng tôi không thấy làm thế nào tôi có thể làm điều đó với tay lái.

Anysuggestions ??

Trả lời

-6

Tôi đã kết thúc bằng cách sử dụng trình trợ giúp tay lái cho việc này.

+18

Bạn có thể cung cấp ví dụ để người khác có thể tìm hiểu không? –

9

Những gì bạn thường làm, đang sử dụng Boolean trong 'mô hình'.

{ 
    isChecked: true 
} 

và sau đó

<input type="checkbox" {{bindAttr checked="isChecked"}}> 

Nếu Boolean là đúng, nó sẽ làm cho checked bất động sản, và nếu Boolean là sai, nó sẽ bỏ qua bất động sản. Vì vậy, nếu isChecked là đúng, sau đó tay lái sẽ ra

<input type="checkbox" checked> 

và nếu isChecked là sai sự thật, chúng tôi sẽ nhận được

<input type="checkbox"> 

Đó là những gì chúng ta muốn!

+0

cho liên kết hai chiều của thuộc tính "kiểm tra" của phần tử với bộ điều khiển/ngữ cảnh (để bộ điều khiển/ngữ cảnh được cập nhật khi hộp kiểm được chọn), bạn có thể sử dụng trình trợ giúp đầu vào: '{{input type =" checkbox " checked = isChecked value = "1" data-unchecked-value = "0"}} ' (nhưng vì 'data-unchecked-value' không được hỗ trợ bởi trình trợ giúp đầu vào ember, hãy xem: http://stackoverflow.com/questions/9894335) –

7

Tôi cũng đã viết một trình trợ giúp để thực hiện việc này. Nó không sử dụng backbone.js, vì vậy có thể là một thay thế cho một số:

Handlebars.registerHelper('checked', function(currentValue) { 
    return currentValue == '1' ? ' checked="checked"' : ''; 
}); 

Cách sử dụng Ví dụ:

<input type="checkbox" name="cbxExample" id="cbxExample" {{checked cbxExample}}/> 

sẽ đánh dấu vào hộp kiểm nếu JSON đã cung cấp là:

{"cbxExample" : "1"} 

Kết quả bằng:

<input type="checkbox" name="cbxExample" id="cbxExample" checked="checked" /> 

[bài đăng đầu tiên của tôi - hy vọng điều đó hữu ích!]

+3

Bạn có thể muốn sử dụng lệnh '' '' '' '' để 'không được thoát. 'với' {{checked cbxExample}} 'đầu ra sẽ thực sự là' checked = " checked " ' Trong mã của bạn, với '{{{checked cbxExample}}}', thì chúng ta có được kết quả chính xác ('checked =" checked "'). –

+0

Điều này đã giúp tôi giải quyết JSON bằng ... đã chọn: "true" hoặc "false" - dưới dạng các chuỗi 'return currentValue == 'true'? 'checked': ''; ' – eon

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