2013-07-21 28 views
5

Tôi đang sử dụng AngularJS TimePicker (ui.bootstrap.timepicker). Tôi muốn kích hoạt một sự kiện khi thay đổi thời gian biểu. Tôi tìm kiếm một thuộc tính ng-thay đổi, nhưng không tìm thấy một.angularjs timepicker ng-change

Mục đích của tôi là tôi muốn lưu các thay đổi được thực hiện cho mô hình khi thời gian được thay đổi. Ngay bây giờ tôi đã sử dụng mô hình ng để thiết lập mô hình, nhưng tôi không thể tìm ra cách thông báo cho bộ điều khiển để nó có thể thực hiện lưu (mô hình được tuần tự hóa thành localstorage). Tôi muốn tránh sử dụng nút "Lưu" nếu có thể.

Trên ghi chú có liên quan, tôi cũng muốn làm điều tương tự cho ui.bootstrap.datepicker.

Trả lời

10

Bạn có thể sử dụng $ scope. $ Watch để nghe những thay đổi đối với timepicker (hoặc datepicker) và gọi bất cứ điều gì cần thiết trong Controller. Dưới đây là một số plunker dựa trên ví dụ bootstrap nhưng cảnh báo bất cứ khi nào thời gian được thay đổi. Bạn cũng có thể áp dụng một logic tương tự cho datepicker.

+0

Cảm ơn bạn rajasaur, điều này sẽ hoạt động tốt. –

+2

Giải pháp tốt và đơn giản. Phần tốt nhất là, nó hoạt động ngay cả khi bạn chia sẻ cùng một đối tượng 'Date' giữa' datepicker' và 'timepicker'. Tuy nhiên, bạn sẽ gặp rắc rối nếu thường trình khởi tạo của bạn không được thiết lập chính xác 100%. Đảm bảo không tạo biểu tượng thời gian (hoặc cha mẹ của nó) trừ khi thời gian đã được đặt. Khác, thời gian ban đầu của bạn sẽ luôn được ghi đè với thời gian hiện tại. Bạn có thể làm điều đó bằng cách sử dụng 'ng-if':' ' – Domi

+0

Domi, tôi đang gặp vấn đề tương tự, bạn có thể giúp những gì để thiết lập như tôi đã không hiểu giải pháp của bạn trong ý kiến. câu hỏi được đăng cho cùng: http://stackoverflow.com/questions/29148040/angularjs-xeditable-plugin-bstime-weird-behaviour – Jayesh