Привязка JavascriptMVC не работает - PullRequest
1 голос
/ 22 мая 2011

Я просто хочу сделать простое нажатие кнопки.Но ничего не происходит при нажатии; - (*

Контроллер:

$.Controller.extend('Cookbook.Controllers.Extra',
{
    onDocument: true
},
{
    "{window} load": function() {
        console.info("loaded");
    },
    'click': function( el ) {
        alert("click");
    }
});

Extra.html (точка входа)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
    <head>
        <title>Test</title>
    </head>
    <body>
        <a href="#" >click here</a>
        <script type='text/javascript' src='../steal/steal.js?extra,development'></script>
    </body>
</html>

Обновление:

Это событие работает. Но не прослушиватель щелчков; - (

 "{window} resize" : function(window, ev){alert("test")}

Ответы [ 3 ]

0 голосов
/ 22 мая 2011

Существуют также «MainControllers», которые не добавляют #controllername перед каждым селектором. Я верю, что это то, что вы пытаетесь достичь. Вам необходимо добавить эту строку в статическую часть определения контроллера:

hasActiveElement : document.activeElement || false

Это сделает ваш контроллер похожим на:

$.Controller.extend("MainController",{
  hasActiveElement : document.activeElement || false
},{
  focus : function(el){
     if(!this.Class.hasActiveElement)
         document.activeElement = el[0] //tracks active element
  }
})
0 голосов
/ 05 октября 2012

Дайте вашей ссылке идентификатор или класс, например

<a href="javascript:;" id="myLink">Click</a>

Тогда в вашем контроллере обработчик регистрации ссылки должен выглядеть так:

'#myLink click': function(){
    //...
 }

Это должно работать.Также обратите внимание, что контроллеры документов как-то устарели.Вы должны создать обычный обычный контроллер и затем присоединить его к какому-либо элементу.

0 голосов
/ 22 мая 2011

onDocument: true означает, что вы объявили свой контроллер в качестве контроллера документов, а контроллеры документов добавляют неявное «#CONTROLLERNAME» перед каждым селектором.

Итак, ваше определение обработчика событий на самом деле:

'#extra click': function( el ) {
    alert("click");
}

Возможно, на вашей странице нет элемента #extra, поэтому он никогда не присоединяется, и событие никогда не запускается,Я сам допустил эту ошибку, когда начал использовать JMVC.

Первая строка документации Document Controller объяснит это.

Я думаю, что они могут покончить с DocumentКонтроллеры в будущем выпуске JMVC, и я считаю, что я не использую их слишком часто.

...