繁体   English   中英

在使用下划线和主干选择下拉列表值时发生更改事件

[英]On change event on the selection of dropdown's value using underscore and backbone

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

正如@danblundell在评论中指出的,该视图仅应负责渲染。 我做了一个最小的骨干示例,以说明它是如何完成的(对于您的示例): http : //jsfiddle.net/dh64x/3/

骨干网提供了视图对象,您可以在其中指定事件和事件处理程序:

var PostView = Backbone.View.extend({

    events: {
        'change #rate': 'postSelected'
    },

    // ...

    postSelected: function(e) {
        console.log(e);
    }

});

在这种情况下,select#rate元素上的change事件绑定到postSelected函数。

阅读文档以获取更多详细信息: http : //backbonejs.org/#View

请尝试此代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM