我在模板中创建了动态下拉列表。而我的进一步要求是更改下拉列表的值并将值发送回Web服务以在系统中进行更改。我不知道如何在下划线模板中执行此操作。下面是我为动态下拉列表编写的代码。哪里必须在模板文件或main.js中编写ratecall函数,不知道它。并且我现在只是发出一个警告,显示已经解雇的变更,但它无法正常工作。实际上即将发生的错误是没有定义ratecall。任何帮助将不胜感激。提前谢谢。
<select id="rate" onchange="ratecall()">
<% for(var i=0;i<post.scales-1;i++){
if(i==post.rated){
var a= 'selected';
}else{
a='';
}
%>
<option id="<%=i%>"<%=a %> > <%= i%></option>
<%}%>
</select>
<%}else{
}
function ratecall(){
document.getElementById("rate").onchange = function () {
alert("ON CHANGE FIRED");
};
}
答案 0 :(得分:1)
正如@danblundell在评论中指出的那样,视图应该只负责渲染。 我做了一个最小的骨干示例,说明了它是如何完成的(对于你的例子):http://jsfiddle.net/dh64x/3/
Backbone提供了视图对象,您可以在其中指定事件和事件处理程序:
var PostView = Backbone.View.extend({
events: {
'change #rate': 'postSelected'
},
// ...
postSelected: function(e) {
console.log(e);
}
});
在这种情况下,select#rate元素上的更改事件将绑定到postSelected
函数。
阅读文档以获取更多详细信息: http://backbonejs.org/#View
答案 1 :(得分:0)
请尝试此代码..
<select id="rate" onchange="ratecall()">
<%
for(var i = 0;i < post.scales - 1;i++)
{
var a= ''
if(i==post.rated)
{
a = 'selected';
}
else
{
a = '';
}
%>
<option id="<%= i %>" <%= a %> > <%= i %></option>
<% } %>
</select>
<%
function ratecall()
{
alert("ON CHANGE FIRED");
}