簡體   English   中英

骨架.js-更改或點擊事件未觸發

[英]backbone.js - change or click events not firing

我正在開始使用bone.js,但似乎無法正確掌握第一手代碼。 我查找了所有資源,但無法找出問題所在。

我期望每次更改輸入框中的內容時都會觸發更改的事件,最后,當我單擊按鈕時,它應該觸發someAction函數。 沒有JavaScript錯誤,但沒有任何反應。 沒有更改或點擊事件被觸發。

有人可以告訴我我在這里想念什么嗎?

Aspx頁面:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 
Inherits="_Default" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>

    <script src="jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="jquery-ui-1.8.18.custom.min.js" type="text/javascript"></script>
    <script src="underscore.js" type="text/javascript"></script>
    <script src="Backbone.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(function() {

            Person = Backbone.Model.extend({
            el: '#form1',

            events : {
                "click #DoSomething": "someAction"
                },

            initialize: function(){
                //This will bind change event of input controls to below function
                _.bindAll(this, "changed");
                },

                //This function will be fired whenever value in the input is changed
                changed: function(evt) {
                    var target = $(evt.currentTarget),
                    data = {};
                    data[target.attr('name')] = target.attr('value');
                    this.model.set(data);
                    alert('Model Updated')
                },

            //take some action on click of a button
            someAction: function(){
                var fName = this.model.get('FirstName');
                var lName = this.model.get('LastName');
                alert("First Name" + fName + " Last Name " + lName);
                return false;
          }
        });
    });

    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <span>First Name</span>
        <input type="text" name="FirstName" id="txtFirstName" value="Mark" />
        <span>Last Name</span><input type="text" name="LastName" id="txtLastName" value="Waugh" />
        <input type="button" id="DoSomething" value="Login Here" />
    </div>
    </form>
</body>
</html>

您的所有功能都應該在視圖中而不是模型中。

Person = Backbone.Model.extend更改為PersonView = Backbone.View.extend 現在,您實際上必須創建視圖的實例。

$(function() {
  PersonView = Backbone.View.extend({
  ...
  });
  window.personview = new PersonView();
});

_.bindAll(this, "changed"); 不會綁定到更改后的事件。 您需要在事件列表中添加'change input': 'changed' 完全不需要bindAll。

另外,我相信this.model是未定義的。 我認為您應該使用this.set(data)而不是this.model.set(data)

相關小提琴(不是我的提琴,但可以使用) http://jsfiddle.net/thomas/C9wew/4/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM