2011-11-09 2 views
0

Я попытался создать страницу взаимодействия с пользователем backbone.js & php. Но я не могу вызвать функцию, когда я представляю форму html. Кто-нибудь может мне помочь?Backbone.js с php-взаимодействием

Вот код

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.js"></script> 
    <script type="text/javascript" src="http://documentcloud.github.com/underscore/underscore.js"></script> 
    <script type="text/javascript" src="http://documentcloud.github.com/backbone/backbone.js"></script> 

    <!--- Here are the backbone code ---> 

    <script type="text/javascript"> 
    var FamilyModel = Backbone.Model.extend({ 
      defaults: { 
        name: "Corleone" 
      }, 
      url: "back.php" 
    }); 

    var FamilyList = Backbone.Collection.extend({ 
      model: FamilyModel 
    }); 


    var FamilyListView = Backbone.View.extend({ 
     el: $('#SampleForm'), 
     model: FamilyModel, 
     events: { 
      'click #Submit': 'createOne' 
     }, 
     createOne: function(e){ 
     e.preventDefault(); 

      alert('Yes'); 
     } 

    }); 

    // Fire up the application: 
    window.App = new FamilyListView; 
    </script> 

<!-- //HTML --> 
<form name="SampleForm" id="SampleForm"> 
<table> 
<tr><td>Name:</td><td><input type="text" name="varName"></td></tr> 
<tr><td>Age:</td><td><input type="text" name="intAge"></td></tr> 
<tr><td>Mobile:</td><td><input type="text" name="intMobile"></td></tr> 
<tr><td colspan="2" align="center"><input type="submit" name="Submit" id="Submit" value="ADD"></td></tr> 
</table> 
</form> 

Ожидая ценный ответ как можно скорее. Благодаря

ответ

1

Вы не можете назвать JQuery там, потому что DOM не создается. Инициализируйте свой FamilyListView, когда DOM готов, и ваш код должен работать.

$(document).ready(function(){ 
    var foo = new FamilyListView({el: $('form')}); 
}); 
+0

Спасибо за ценный ответ. Теперь я изо всех сил пытался получить входные значения формы HTML для перехода на сервер с помощью Backbone.sync // Вот код var str = $ ("# SampleForm"). SerializeArray(); \t \t e.preventDefault(); \t \t alert (str); \t \t var familymembers = new FamilyList (str); \t \t familymembers.each (функция (член) { \t Backbone.sync ("создать", член {Succ: функция (е) {Alert (е);}}); \t}); Пожалуйста, помогите мне Заранее благодарим –

3

Вы должны задержать призвание вашего выбора $('#SampleForm'), пока DOM не будет готов.

Магистральные объекты определяются литералами объектов, что означает, что значение справа оценивается немедленно. Поскольку он сразу оценивается, DOM не готов, и jQuery не может найти вашу форму.

Я написал подробное объяснение проблемы и возможные решения, здесь: http://lostechies.com/derickbailey/2011/11/09/backbone-js-object-literals-views-events-jquery-and-el/

+0

Derick, Спасибо, что потратили для меня драгоценное время. –

Смежные вопросы