我有一个简单的类,它有一些方法(现在)。我可以实例化它并调用 init 函数,但我不能从onchange
属性中调用另一个方法。
这是课程:
var ScheduleViewer = (function() {
var options = {
container: 'trip_stops',
schedule: {}
};
function ScheduleViewer (){};
ScheduleViewer.prototype.init = function(params) {
$.extend(options, params);
// setTimeout(function() {
// ScheduleViewer.addListener(options);
// }, 3000);
this.addListener(options);
}
ScheduleViewer.prototype.getSchedule = function(trip_id) {
var _id = trip_id;
console.log(_id);
}
ScheduleViewer.prototype.addListener = function(options) {
console.log("adding listener");
var _id = options.select_id;
console.log($('#train_select').length);// zero assuming timing issue
$('#'+_id).on('change', function() {
alert("changed");
})
}
return ScheduleViewer;
})();
通话
<div id="trip_stops" class="trip_options">
<% if (trips.length > 0) { %>
<%
var params = {
schedule: schedule
};
var scheduler = new ScheduleViewer();
scheduler.init(params);
%>
<select id="train_select">
<option value="0" selected disabled>Select a train</option>
<% $.each(trips, function(index, val) { %>
<option value="<%= val.trip_id %>">
<%= val.train_num %> Train
</option>
<% }); %>
</select>
<% } else { %>
No trips scheduled.
<% } %>
</div>
请注意,我使用 jqote 进行模板化。
我从 init 调用中获取日志,但随后在onchange
with中失败Uncaught ReferenceError: scheduler is not defined
。我不确定我做错了什么。任何指针?
谢谢
编辑:我尝试添加一个在初始化时调用的侦听器。我假设由于时间问题,听众没有被绑定。现在这就是我尝试尝试的缺乏经验的地方,setTimeout
但函数调用并没有按原样发生。