我有一个列表,我想自动将一个项目设置为class ="active".给出以下引导代码:
<ul class="nav">
<li {{bindAttr class="atIndex:active"}}>{{#linkTo "index"}}Index{{/linkTo}}</li>
<li {{bindAttr class="atAbout:active"}}>{{#linkTo "about"}}About{{/linkTo}}</li>
<li {{bindAttr class="atLogin:active"}}>{{#linkTo "login"}}Login{{/linkTo}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
atIndex,atAbout和atLogin驻留在我的ApplicationController中.
渲染为:
<ul class="nav">
<li class="active"><a...>Index{{/linkTo}}</li>
<li><a...>About<a></li>
<li><a...>Login<a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
使用Ember 1.0 pre4做到这一点的最佳方法是什么?我宁愿不为每个视图或控制器添加特殊代码.
PS - atIndex: true有效,但atIndex: function() {return true; }.property().volatile()没有.这让我觉得我做错了什么.
谢谢!
标签标签的形式如下:
<label for="id_of_text_field">
<input type="text" name="example" id="id_of_text_field" />
Run Code Online (Sandbox Code Playgroud)
当for标签的标签和id文本字段的标签必须匹配.我有两个想法可以在我的Ember.js模板中完成这项工作:
想法#1:我试图制作一个特殊的绑定命名field_id,用于label和TextField.我按如下方式执行:
<label {{bindAttr for="content.field_id"}}> {{content.label}}</label>
{{view Ember.TextField valueBinding="content.data" id="content.field_id"}}
Run Code Online (Sandbox Code Playgroud)
不幸的是,只有label'sid正确呈现.该TextField'sID并没有正确地渲染和真可谓是"metemorph ......东西或-其他".
想法#2:以某种方式召唤TextField的id并将其用于label标签,但是我担心在渲染label标签时TextField的id不会准备就绪.即使这不是问题,我也不知道如何TextField's从JS中找到id.
这是一个模板,所以我将有多个这样的标签/ TextField对.
如何让标签的for标签与id带有Ember.js 的TextField 标签相匹配?
谢谢!
UPDATE
使用Peter Wagenet的建议和稍作修改,我做了以下事情:
<label {{bindAttr for="textField.elementId"}}> {{content.label}}</label>
{{view Ember.TextField valueBinding="content.value" viewName="textField"}}
Run Code Online (Sandbox Code Playgroud)
使用此技术,用户现在可以单击标签以选择TextFields,CheckBoxes和Selects.
我有使用 .vue2 添加和删除的组件v-if。在某些情况下,我在$emit发送者和$on接收者之间进行通信。
我一直在使用this.$root.$emit广播自定义事件并this.$root.$on处理事件。我发现使用this.$root.$onrequire this.$root.$off(来自beforeDestroy),否则被删除的组件可能会尝试处理它,并且会发生不好的事情。
我有两个问题:
this.$root.$emit和 和有什么区别this.$emit?this.$on,我还必须将其配对吗this.$off?或者当组件被移除时处理程序会自动“关闭”吗?我还是Ember.js的新手.该嵌套的资源例如规定如下:
URL: /post/:post_id/comments/new
Route Name: comments.new
Controller: App.CommentsNewController
Route: App.CommentsNewRoute
Run Code Online (Sandbox Code Playgroud)
鉴于这种:
谢谢!
编辑:这个问题是关于Ember Pre4.