JavascriptMVC绑定不起作用

JavascriptMVC绑定不起作用,javascript,javascriptmvc,Javascript,Javascriptmvc,我只想做一个简单的按钮点击。但点击后什么也没发生- 控制器: 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> <bo

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

控制器:

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>
onDocument:true表示您已将控制器声明为文档控制器,并且文档控制器在每个选择器之前添加一个隐式的“CONTROLLERNAME”

因此,您的事件处理程序定义实际上是:

'#extra click': function( el ) {
    alert("click");
}
您的页面上可能没有额外的元素,因此它不会被附加,事件也不会被触发。当我开始使用JMVC时,我自己犯了这个错误

文档的第一行将解释这一点


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

还有一些主控制器没有在每个选择器之前添加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
  }
})

例如,为链接提供一个id或类

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

这应该行得通。还请注意,文档控制器以某种方式被弃用。您应该创建一个普通控制器,然后将其连接到某个元素。

不起作用。cookbook示例在没有这一行的情况下也可以工作。为什么?在Cookbook Recipe控制器的{window}加载处理程序中,它创建了一个id为Recipe的div(如果它不存在),并且所有事件都附加到该div。只要页面上存在具有正确id的元素,事件处理程序就会被附加。JavaScriptMVC的论坛就是获取答案的地方。我不经常在这里查看。
$.Controller.extend("MainController",{
  hasActiveElement : document.activeElement || false
},{
  focus : function(el){
     if(!this.Class.hasActiveElement)
         document.activeElement = el[0] //tracks active element
  }
})
<a href="javascript:;" id="myLink">Click</a>
'#myLink click': function(){
    //...
 }