Ember.js Ember 2.0作为过渡到的替代方案,因为它已被弃用

Ember.js Ember 2.0作为过渡到的替代方案,因为它已被弃用,ember.js,ember.js-2,Ember.js,Ember.js 2,所以我尝试制作一个名为“fsol app btn”的组件,它是一个标记链接。 我做的第一件事是更改component.js中的标记名,使其在页面上正确呈现为标记 下面是component.js: export default Ember.Component.extend({ classNames: ['btn', 'btn-app'], tagName: 'a', num: false, color: 'aqua', route: 'dashboard',

所以我尝试制作一个名为“fsol app btn”的组件,它是一个标记链接。 我做的第一件事是更改component.js中的标记名,使其在页面上正确呈现为标记

下面是component.js:

export default Ember.Component.extend({
    classNames: ['btn', 'btn-app'],
    tagName: 'a',
    num: false,
    color: 'aqua',
    route: 'dashboard',
    mouseDown: function() {
        console.log('f'+this.get('route'));
        //this.transtionTo(this.get('route'));
        this.sendAction('action', this.get('route'));
    }
});
以下是组件的模板.hbs:

{{#if num}}
    <span class="badge bg-{{color}}">{{num}}</span>
{{/if}}
<i class="fa fa-{{icon}}"></i>{{title}}
图标
标题
颜色
,和
num
都可以工作,并且只用于设计样式,因此这一组件可以用于我想要的任何类型的按钮

但是该按钮的主要功能是单击并执行某些操作,在这种情况下,我希望它转到一个路由,例如指向
助手的
链接。我尝试传递一个
route='route'name'
,然后在
mouseDown
上调用
this.transionto(this.get('route'))

但是我收到了一个不推荐的警告,它不起作用

那我该怎么做呢? 顺便说一句:我也尝试了
this.sendAction()
,在这种情况下,我有一个名为“clicked”的操作,定义如下:

{{fsol-app-btn icon='bullhorn' action="clicked" title='Notifications' route='index' num='3' color='yellow'}}
但后来我得到一个错误,说我的fsol应用程序btn的父组件没有操作处理程序:clicked

我试着在我认为会引起轰动的地方到处走路线,但没有成功


有什么想法吗?

@locks是对的。您希望使用指向helper的链接,并指定类,使其行为类似于代码示例中的按钮

指向的链接支持内联和块调用,因此您应该能够将您的徽章、文本等放在指向帮助器的链接中

只需在组件的模板中添加如下内容

{{#链接到路由classNames=“btn btn app”}
{{{#if num}}
{{num}}
{{/if}
{{title}}
{{/链接到}


适用的余烬Api-

@locks是正确的。您希望使用指向helper的链接,并指定类,使其行为类似于代码示例中的按钮

指向的链接支持内联和块调用,因此您应该能够将您的徽章、文本等放在指向帮助器的链接中

只需在组件的模板中添加如下内容

{{#链接到路由classNames=“btn btn app”}
{{{#if num}}
{{num}}
{{/if}
{{title}}
{{/链接到}


适用的余烬Api-

为什么不使用链接到
?你的问题不太清楚。当前正在实施一个对您有用的方法。当您从控制器而不是路线过渡时,您还需要
过渡路线
。为什么不使用链接到
?你的问题不太清楚。当前有一个正在实施的应用程序对您有用。当您从控制器而不是路由转换时,您还需要
transitionToRoute
。主要原因是当它呈现页面时,我在一个“a”标记中有一个“a”标记,如下所示:同时,按钮的css全部关闭,无法正确呈现,再加上有两个“a”标签是愚蠢的。这就是为什么我将组件的标记名更改为“a”标记名的原因。有几个选项:*您可以将标记名保留为默认的“div”*从技术上讲,您可以将标记名设置为“”,但它不受很好的支持*组件具有隐式的“单击”处理程序。您可以实现这一点,并调用一个闭包操作,该操作源于一个有权访问
transitionTo
*的路由还有一个ember route action helper,允许您在显式路由上调用操作。在这里,你可以再次访问Transitiono方法。主要原因是当它呈现页面时,我在一个“a”标记中有一个“a”标记,如下所示:此外,按钮的css全部关闭,无法正确呈现,再加上使用双“a”标记是愚蠢的。这就是为什么我将组件的标记名更改为“a”标记名的原因。有几个选项:*您可以将标记名保留为默认的“div”*从技术上讲,您可以将标记名设置为“”,但它不受很好的支持*组件具有隐式的“单击”处理程序。您可以实现这一点,并调用一个闭包操作,该操作源于一个有权访问
transitionTo
*的路由还有一个ember route action helper,允许您在显式路由上调用操作。在这里,您同样可以访问transitiono方法
{{fsol-app-btn icon='bullhorn' action="clicked" title='Notifications' route='index' num='3' color='yellow'}}