问题标签 [ember.js-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ember.js - 如何在 ember 2.0 组件中创建动态类名?
例如:Ember 组件允许您添加一个 classNames 数组,这些类将被添加到组件的主 div 中。假设我们有这个名为new-div 的组件
那么如果你在渲染时检查这个组件,你会看到:
这很好,但我的问题是,如果我有时想将此组件用作流体容器,有时我可能想让它成为 jumbotron 等。
有没有办法在 html 中执行此操作并让 component.js 正确应用它?
然后在component.js中:
ember.js - Ember 2.0 的 transitionTo 替代品,因为它已被弃用
所以我正在尝试制作一个名为“fsol-app-btn”的组件,它是一个 A 标签链接。我做的第一件事是更改 component.js 中的 tagName 所以它在页面上正确呈现为 A 标记。
这是component.js:
这是组件的 template.hbs:
现在它在 html 中:
icon
, title
, color
, 和num
所有的工作,只是为了造型,所以这个组件可以用于我想要的任何类型的按钮。
但是该按钮的主要功能是单击并执行某些操作,在这种情况下,我希望它转到一条路线,例如link-to
助手会。我尝试通过 aroute='name of route'
然后mouseDown
随叫随到this.transtionTo(this.get('route'))
;
但是我收到了一个已弃用的警告,但它不起作用。
那么我该怎么做呢?顺便说一句:我也尝试过this.sendAction()
,在这种情况下,我定义了一个名为“点击”的操作,如下所示:
但后来我得到一个错误,说我的 fsol-app-btn 的父组件没有操作处理程序:clicked
我试着在我认为会抓住行动的地方到处走路线,但无济于事。
有任何想法吗?
javascript - Ember js 2.0 将计算属性从控制器传递到组件
我正在使用 Ember 2.3。
就像标题说的那样,我试图将一个计算属性从我的控制器传递给我的组件。我不知道我做错了什么,但它对我不起作用。这就是我正在做的事情:
在我的控制器中:
我的组件:
在我的模板中:
我看到的是我myProperty
的 inmy-component
总是设置为{}
. 它永远不会得到我在模板中提交的值。注意我还尝试在我的控制器上将属性定义为字符串文字并将其提交,但它也无法识别。另外值得注意的是,我最初确实尝试在我的路由中定义计算属性,但我发现我可以访问它的唯一方法是它是在模型钩子本身中定义的,例如:
但这对我不起作用,因为我需要来自控制器的值,而这些值在调用模型钩子时不可用。
我不知道我在这里做错了什么。我敢肯定这很简单,但我的想法已经不多了。谁能告诉我我在这里做错了什么?以任何方式将计算属性从控制器传递到组件是不好的做法吗?任何意见,将不胜感激。非常感谢!
javascript - 如何从 Ember 应用程序模板中的路由访问数据?
我正在关注 Ember 2.3 的文档,似乎找不到任何非常基本的东西:如何访问主模板中路由模型钩子提供的值:application.hbs
?
路线/client.js
模板/应用程序.hbs
就像现在一样,导航对象可以被路由的模板 ( client.hbs
) 访问,但不能被应用程序模板访问。
javascript - 设置嵌套属性值,如果不存在则创建父级
所以我使用的是 Ember JS 2.2,我有一个普通的 JS 对象,想设置一个嵌套属性的值。但是我不知道某些父属性是否已经存在。如果它们不存在,我想将它们创建为一个空对象。基本上我想这样做:
它看起来像:
我知道我可以手动检查每个级别并在它不存在时分配它,但我希望 Ember 有一些可以做到这一点的东西。我以为我读到在 Ember 中有一种现有的方法可以做到这一点,但似乎无法在文档中找到它。谁能告诉我我是否遗漏了什么,或者我只需要编写自己的实现吗?任何建议表示赞赏。谢谢!
ember.js - 在 ember.js 中为“站点标题”使用组件与部分
这更像是一个设计/最佳实践问题,在Ember 2.x
我正在构建一个新的 ember Web 应用程序,对于站点的标题,我创建了一个单独的组件,site-header
并将其包含在 application.hbs 中,如下所示。
应用程序.hbs
我试图找出,如果使用部分而不是组件可能是更好的选择,原因如下:
该组件,site-header
...
- 仅用于
application.hbs
- 不保持任何状态
- 与它没有
actions
关联(只是一些更改的链接route
)。
ember.js - 如何将多个参数传递给 Ember2.3 中选择元素的 onChange 操作
我在循环中有一个select元素,我想要触发的动作需要有两个参数:select元素的 selected 选项和我们正在循环的项目。我的代码如下所示:
而我的火这个动作是这样的:
因此,在我的特定情况下,子项的数量是动态的,我需要将选定的子项与它当前所在的循环项一起使用。
除非重构为组件(现在,我不能这样做),我如何将多个参数传递给在“onChange”上触发的操作?
我努力了:
对于上述所有情况,我在函数中的两个参数都未定义(或导致另一个错误)。唯一有效的是:
但这只会给我 subItem,而不是 loopItem。
不幸的是,loopItems 是新创建的 Ember 对象,没有任何 ID 参数,所以我也不能给每个选择元素一个唯一的 ID。传递多个参数的能力几乎可以解决我的整个问题。
ember.js - 如何在 Ember 2.3 中获得等效的 BeforeObserver?
在此之前,我必须澄清一下,在过渡到 Ember 2.3 的过渡期间,我正在使用 legacy-controller 和 legacy-view,可在此处找到:
https://github.com/emberjs/ember-legacy-controllers
现在,我的(旧版)控制器上有一个名为 currentTopPost 的属性。
在 Ember 1.7 中,我有这样的设置:
我这样做的原因是,当currentTopPost更改时,我希望它在将其值切换到新属性之前保存旧的topPost ,因为它是一个 Post 对象(我有一个 Post 模型)。
当然,在 1.7 中,我将旧帖子保存在 beforeObserver 中,然后在观察者中执行我必须做的任何其他事情。现在,在 Ember 2.3 中,我进行了以下设置:
就执行具有新值的功能而言,它可以正常工作。但是我已经失去了在值改变之前处理动作的能力。现在根据对这个问题的回答:
observesBefore函数已被弃用,我们应该遵循以下原则:
但是,在尝试使用 this.get("_oldCurrentTopPost") 时,我什么也没得到。如何在此属性更改之前访问它的旧值?
ember.js - 是否可以限制加载模型直到某些条件?
我有模型称为帖子。和称为帖子列表的组件
应用程序/模板/组件/posts-list.hbs:
主模板:
应用程序/路线/posts.js:
问题描述:无论用户是否授权,这些帖子都可以加载,但是当用户授权时,标题会有所不同(数据来自使用 JWT 的服务器)。
我将 ember-simple-auth 与自定义授权器和验证器一起使用。身份验证过程看起来像 - 用户单击链接并转到后端,然后使用令牌作为 GET 参数重定向回主页。我在 app/routes/application.js 中覆盖了 setupController 并调用
在身份验证器中,我具有以下功能:
所以我试图让当前用户使用令牌,如果成功,则用户被授权。
除了一件事,一切都很好。在请求当前用户之前请求帖子,因此即使用户实际授权他也会看到未经授权的内容。是否可以告诉 Ember 加载顺序(或在身份验证后重新加载数据,但这会产生第二个不受欢迎的请求)。
ember-cli - pod 文件的结构是 ember 2.x 应用程序的方式吗?
与使用 2.x 版本在 ember 项目中组织文件的传统方式相比,是否推荐使用pod结构?