1

我只想做一个简单的按钮点击。但是点击什么也没发生;-(

控制器:

$.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")}
4

3 回答 3

0

例如,给您的链接一个 id 或类

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

然后在您的控制器中,链接注册处理程序应如下所示

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

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

于 2012-10-05T19:33:48.840 回答
0

onDocument: true意味着您已将控制器声明为文档控制器,并且文档控制器在每个选择器之前添加了一个隐式的“#CONTROLLERNAME”。

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

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

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

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

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

于 2011-05-22T17:54:44.873 回答
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
  }
})
于 2011-05-22T17:58:25.813 回答