关于使用下划线和主干选择下拉列表值的更改事件

时间:2014-03-06 13:07:48

标签: javascript jquery backbone.js underscore.js-templating

我在模板中创建了动态下拉列表。而我的进一步要求是更改下拉列表的值并将值发送回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");
                };
                }

2 个答案:

答案 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");       
}