JavascriptMVC绑定不起作用

时间:2011-05-22 17:05:34

标签: javascript javascriptmvc

我只是想做一个简单的按钮点击。但点击没有任何反应; - (

控制器:

$.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 :(得分:0)

onDocument: true表示您已将Controller声明为文档控制器,文档控制器在每个选择器之前添加隐式“#CONTROLLERNAME”。

所以你的事件处理程序定义实际上是:

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

您的页面上可能没有#extra元素,因此它永远不会被附加,并且事件永远不会被触发。当我开始使用JMVC时,我自己犯了这个错误。

Document Controller文档的第一行将解释这一点。

我认为他们可能会在未来的JMVC版本中取消文档控制器,我发现我不经常使用它们。

答案 1 :(得分:0)

还有“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
  }
})

答案 2 :(得分:0)

为您的链接提供ID或类,例如

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

然后在您的控制器中,链接注册处理程序应该看起来像

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

这应该有效。另请注意,文档控制器在某种程度上已被弃用。您应该创建一个普通的普通控制器,然后将它附加到某个元素。