2013-06-13 24 views
9

Tôi biết rằng Meteor hỗ trợ các sự kiện và tôi đã thấy nó hoạt động trên hộp kiểm, nhưng tôi chỉ muốn ai đó có thể làm rõ nếu chúng ta có thể móc sự kiện thay đổi trong thiên thạch trên các menu thả xuống được chọn như sauSự kiện thay đổi trên <select> Meteor.js

Template.templateName.events({ 
    'change select': function(e,t){ 
     // do whatever....... 
    } 
}); 

Tôi đang cố gắng thực hiện việc này bằng Meteor và dường như nó không kích hoạt khi tôi thay đổi giá trị trong hộp chọn. Tuy nhiên khi tôi sử dụng jQuery để thay đổi mọi thứ thì nó hoạt động tốt.

Trả lời

3

Mã của bạn nên hoạt động, nó hoạt động tốt cho tôi.

Mặc dù tôi cho rằng sự kiện chỉ mất một đối số MapMap, chứ không phải hai. Đối số "t" sẽ là gì?

+0

Kristoffer K: Theo một số của các hướng dẫn tôi đã được sau tôi nghĩ rằng t đại diện cho một số yếu tố nhắm mục tiêu có thể khi một phần phản ứng của thiên thạch thay đổi. Liên quan đến việc chọn mã làm việc tốt, lạ tôi đã thử nó một lần nữa và một lần nữa ngay cả trên các phần khác nhau và nó vẫn không nhận sự kiện thay đổi ở tất cả. Dù sao nhờ trả lời. – koramaiku

+1

OK, tôi sử dụng event.currentTarget để lấy mục tiêu hiện tại. Tôi nghĩ đó là cách "đúng" để làm điều đó. Hoặc bạn có nghĩa là một số yếu tố khác hơn là nhấp/thay đổi/bất cứ điều gì? Cảm ơn bạn! –

+3

tham số thứ hai có thể được sử dụng để lấy dữ liệu mẫu có liên quan thông qua t.data, ví dụ: khi bạn đang sử dụng {{#each users}} {{> itemRow}} {{/ each}}, bạn có thể nghe các sự kiện trong mẫu itemRow và sử dụng t.data để người dùng được liên kết với hàng –

1

bạn có thể sử dụng một sự kiện như thế này để xử lý nhiều hộp kiểm, sau đó kiểm tra một số thuộc tính (thường là id) để xem cái nào được nhấp. Hoặc ở đây kể từ khi this trả về hàng của khách hàng của tôi, tôi chỉ có thể nhận được giá trị mà tôi muốn từ ngữ cảnh.

Template đoạn

{{#each phonemeResults}} 
    <tr> 
     <td> 
     <div class="checkbox"> 
      <label> 
      <input type="checkbox" class="star"> 
      </label> 
     </div> 
     </td> 
     <td> 
      {{word}} 
     </td> 
     <td> 
     <small>{{phoneme}}</small> 
     </td> 
    </tr> 
    {{/each}} 

handler

Template.phonemeList.events({ 
    'change [type=checkbox]': function(e,t){ 
    console.log("add " this.word + " to user's public starred list"); 
    }, 
}); 
0

Tôi có một vấn đề tương tự. Bí quyết là chỉ có các yếu tố <option> được bao gồm trong mẫu của tôi và phần tử <select> ở bên ngoài nó, trong <body>. Đảm bảo rằng Mẫu bản đồ sự kiện được định cấu hình thực sự chứa phần tử <select>.

0

Nếu bạn muốn nó bắn vào một lựa chọn thay đổi hộp cụ thể:

Template.chatRooms.events({ 
'change #chatroomList' : function(event){ 
     console.log("Changed") 
     } 
}) 

Nếu bạn muốn nó bắn vào bất kỳ sự thay đổi selectbox trong mẫu:

Template.chatRooms.events({ 
    'change select' : function(event){ 
      console.log("Changed") 
      } 
    }) 
Các vấn đề liên quan