Ember.js 带有点击事件的{action}不';t触发v2 Ember路由器中的功能

Ember.js 带有点击事件的{action}不';t触发v2 Ember路由器中的功能,ember.js,Ember.js,我刚刚更新了Ember,我正在尝试将一个旧的应用程序转换为新的路由器API 在我的模板中,我有以下内容: <button {{ action "createNewApp" }} class="btn btn-primary">Create application</button> 但是,当我单击按钮时,该函数从未被调用。我已尝试将事件的目标更改为控制器,但它仍然不起作用。这是一个错误还是我做错了什么?我能够使用路由器的events属性中的函数(感谢sly7_7)或控制器

我刚刚更新了Ember,我正在尝试将一个旧的应用程序转换为新的路由器API

在我的模板中,我有以下内容:

<button {{ action "createNewApp" }} class="btn btn-primary">Create application</button>

但是,当我单击按钮时,该函数从未被调用。我已尝试将事件的目标更改为控制器,但它仍然不起作用。这是一个错误还是我做错了什么?

我能够使用路由器的events属性中的函数(感谢sly7_7)或控制器中的函数来处理点击:

模板:

<script type="text/x-handlebars" data-template-name="application">
    <h1>Content Here:</h1>
    {{outlet content}}
  </script>

  <script type="text/x-handlebars" data-template-name="content-view">
    <h2>content</h2>
    <button {{ action "createNewApp" }} class="btn btn-primary">Create application</button>
  </script>
单击按钮时,控制台日志消息为“单击它,控制器”,当控制器中的功能被删除时,操作由路由器处理,控制台日志消息为“单击它,路由器”。如果
{{action}}
Ember中没有指定目标,则会尝试在视图中查找事件,然后是控制器,然后是路由

这是使用今天从源代码构建的emberjs的构建

原始答复如下:

新路由器中的
{{action}
被替换为
{{linkTo}


emberjs.com指南不断更新新路由器的新信息。本指南介绍了
{{linkTo}
帮助程序,并讨论了如何使用
{action}
帮助程序来处理模板中的事件。

我能够使用路由器事件属性中的函数(感谢sly7)或控制器中的函数来处理点击:

模板:

<script type="text/x-handlebars" data-template-name="application">
    <h1>Content Here:</h1>
    {{outlet content}}
  </script>

  <script type="text/x-handlebars" data-template-name="content-view">
    <h2>content</h2>
    <button {{ action "createNewApp" }} class="btn btn-primary">Create application</button>
  </script>
单击按钮时,控制台日志消息为“单击它,控制器”,当控制器中的功能被删除时,操作由路由器处理,控制台日志消息为“单击它,路由器”。如果
{{action}}
Ember中没有指定目标,则会尝试在视图中查找事件,然后是控制器,然后是路由

这是使用今天从源代码构建的emberjs的构建

原始答复如下:

新路由器中的
{{action}
被替换为
{{linkTo}


emberjs.com指南不断更新新路由器的新信息。本指南介绍了
{{linkTo}
帮助程序,并讨论了如何使用
{{action}
帮助程序处理模板中的事件。

我不确定是否理解这一点。当你说
{{action}}
被替换时,你的确切意思是什么?我在哪里可以读到更多关于这方面的信息?如果替换了
{{action}}
帮助程序,为什么它会可用?我已经检查了文档,我正在代码的其他部分使用linkTo。但是当我阅读这些文档时,我得到的印象是,当您想要转换到某个状态时,您可以使用linkTo,并且操作用于绑定事件(例如单击)。这难道不是它们在文档中的不同部分的原因吗?或者你是说linkTo可以替代action,action部分将在将来被删除?这直接来自文档:1)LINKS:你使用{{linkTo}帮助器创建一个指向路由的链接。2) 操作:您可能希望触发高级事件以响应简单的用户事件(如单击)。它们显然是不同的东西,我看不出linkTo如何取代action。它看起来更像是一个添加!啊,是的,你是对的,我以为你说的只是过渡状态。我想你错过了一些东西,在相关路线的
events
属性映射中声明事件。类似于App.CreateAppRoute=Ember.Route.extend({renderTemplates:function(){…},events:{createNewApp:function(){console.log(“它被点击了,路由器”);}}}我不确定我是否理解。当你说
{action}
正在被替换,你的确切意思是什么?我在哪里可以读到更多关于这个的信息?为什么
{{action}
helper在被替换时是否可用?我已经检查了文档,并且在代码的其他部分使用了linkTo。但是当我阅读文档时,我得到的印象是,当您想要转换到某个状态时,您可以使用linkTo,并且操作用于绑定事件(例如单击)。这不是它们在文档中不同部分的原因吗?或者你是说linkTo可以替代action,action部分将在将来被删除?这直接来自文档:1)链接:使用{{linkTo}创建指向路由的链接2)操作:您可能希望触发高级事件以响应简单的用户事件(如单击)。它们显然是不同的东西,我看不出linkTo如何取代action。它看起来更像是一种添加!啊,是的,你是对的,我以为你说的只是过渡状态。我认为你遗漏了一些东西,在相关路径的
事件
属性映射中声明事件。类似App.CreateAppRou的东西te=Ember.Route.extend({renderTemplates:function(){…},事件:{createNewApp:function(){console.log(“它被点击了,路由器”);}
var App = Ember.Application.create();

App.CreateAppView = Ember.View.extend({
    templateName: "content-view"    
});
App.CreateAppController = Ember.Controller.extend({
    createNewApp: function(){
        console.log("It's clicked, controller");
    }
});

App.Router.map(function(match) {
  match('/').to('createApp');
});
App.CreateAppRoute = Ember.Route.extend({
    renderTemplates: function() {
        this.render({ outlet: 'content'});
    },
    events: {
        createNewApp: function(){
            console.log("It's clicked, router");
        }
    }
});