2013-01-24 15 views
1

我想了解Backbone.js以及它是如何工作的。我已經創建了兩個文本框,可以取任何值,並按鈕(Multipy)的值顯示在下面的框中,這可以工作,但我希望在第三個框中顯示兩個值的乘法 - 我試圖將這兩個值值變量和乘法,但它似乎並沒有工作。我認爲從文本框中返回的值存在一些問題,認爲它是NAN。無論如何,請看看並建議。我已將註釋掉的代碼註釋掉了。 直播網址:http://egoless.co.uk/learning/learn_backbone/first-backbone-app.php無法輸出從文本框(可能南)的值的乘法 - Backbone.js

<!DOCTYPE html> 
    <html> 
    <head> 
    <title>Testing</title> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="underscore.js"> 
    </script><script type="text/javascript" src="backbone.js"></script> 
    <style> 
    .size { 
    width: 100px; 
    height: 30px; 
    border: solid 1px red; 
    float: left; 
    margin-left: 10px; 
    text-align: center; 
    font-weight: bold; 
    } 
    </style> 
    </head> 
    <body> 
    <input type="text" id="box1" /> 
    &nbsp; 
    <input type="text" id="box2" /> 
    &nbsp; 
    <button id="myBtn">Multiply</button> 
    <br> 
    <br> 
    <div id="myBox" class="size"></div> 
    <div id="myBox2" class="size"></div> 
    <div id="myBox3" class="size"></div> 

    <script> 

    (function($){ 
    //defining model 1 
    PersonModel1 = Backbone.Model.extend({ 

     defaults:{ 
       age : function(){ 

       return $("input#box1").val(); 

       } 
      } 
    }); 

    myPerson1 = new PersonModel1(); 

    //defining model 2 
    PersonModel2 = Backbone.Model.extend({ 

     defaults:{ 
       age : function(){ 

       return $("input#box2").val(); 

       } 
     } 
    }); 

    myPerson2 = new PersonModel2(); 

    //defining collection 


    Group = Backbone.Collection.extend({ 
      Model: PersonModel1, 
      Model: PersonModel2, 
      url:"#" 

     }) 

      People = new Group([]); 
      People.add(myPerson1); 
      People.add(myPerson2); 

    //adding view 

    ResultView = Backbone.View.extend({ 
      el:'button', 
      events:{ 
       'click':'render' 
      }, 
     render:function(){ 

      val1 = myPerson1.get('age'); 
      val2 = myPerson2.get('age') 
      val3 = val1*val2 // not working 
      $('div#myBox').html(val1); 
      $('div#myBox2').html(val2); 
      $('div#myBox3').html(val3); // not working 
      $('input#box1').val(""); 
      $('input#box2').val(""); 
      return this; 
      } 
     }) 




    $(document).ready(function(e) { 
     myResultView = new ResultView(); 
    }); 

    })(jQuery); 

    </script> 
    </body> 
    </html> 
+0

開始。把'console.log($(「input#box1」).val())'放在你嘗試獲取值的年齡方法中。如果這是通過一個正確的數字繼續向上移動棧跟蹤,直到你發現問題。如果它不正確,那麼你知道你的選擇器或元素有問題,你可以測試,調整或下移。 – DigTheDoug

+0

在你的視圖中定義你的變量時,你也應該使用'var',否則你將來會遇到範圍問題,更不用說偶然刪除它的可能性。 – DigTheDoug

+0

是的,這工作console.log(($(「input#box1」).val())*($(「input#box2」).val()))但我想分配值的屬性一個對象定義爲模型 – user1336103

回答

0

違約率模型定義的部分則只能分配值的屬性。 要返回值的年齡,您應該編寫單獨的函數。

  defaults:{}, 
      age : function(){ 
      return $("input#box1").val(); 
      } 

,您可以通過跟蹤接近底部,你可以這樣調用

 val1 = myPerson1.age(); 
     val2 = myPerson2.age(); 
     val3 = val1*val2 ; 
+0

我試過使用parseInt和+但它根本沒有顯示任何值 – user1336103

+0

謝謝Akinza它工作:) – user1336103

+0

試着總是檢查什麼值是/正在使用'console.log (val1,val2,val3)' – Akinza