2015-05-23 33 views
0

嗨,我使用EmberJS在我的应用程序,这是我的应用程序模板,并与应用控制器把手每个助手范围改变财产

我叫isEditAble在控制器的属性,但我有一个问题 如果我用于在每个助手外部检查此属性,这将执行正常。 但如果我在每个帮助器(isEditAble属性)范围内使用内部不看内部,它总是会是假的。

任何人都可以请指导如何使用每个助手内的属性。

ApplicationTemplate:

//This if executing and textbox is displaying because of isEditAble = true 
    {{#if isEditAble}} 
     <div style="width: 40px;"> 
     {{input type=text disabled=isChecked}} 
     </div> 
    {{/if}} 


{{#each checkBoxes}} 
     //This if is NOT executing and checkboxes is NOT displaying 
     //Even Though is EditAble true 
    {{#if isEditAble}} 
     <div style="width: 40px;"> 
     {{input type=checkbox disabled=isChecked}} 
     </div> 
    {{/if}} 
{{/each}} 

Apllication控制器:

App.ApplicationController = Ember.Controller.extend({ 
    appName: 'Tag Editor', 
    checkBoxes: [ 
    {id: 1, isChecked: true}, 
    {id: 2, isChecked: true}, 
    {id: 3, isChecked: true}, 
    {id: 4, isChecked: true} 
    ], 
    isEditAble: true 
    }); 
+0

可以指定emberjs的哪个版本访问父上下文? –

+0

我使用的是emberJS 1.5.1 –

回答

4

可以使用block parameters正常范围值:

{{#each checkBoxes as |cbox|}} 
    {{#if isEditAble}} 
     <div> 
     {{input type="checkbox" checked=cbox.isChecked}} hello 
     </div> 
    {{/if}} 
{{/each}} 

还要注意类型是怎样包裹在引号(而且我认为isChecked应该切换checked财产而不是disabled)。

JSbin

编辑:由于您使用的是旧版本V1.5.1,块参数不可用。您可以通过使用

{{#if ../isEditAble}} 

或根上下文(在这种情况下是一样的父上下文)与

{{#if @root.isEditAble}} 
+0

我试过使用| cbox |我正在解析错误未捕获错误:第7行解析错误: ...} {{#每个复选框为| cBox |}} {{/每个}} –

+0

啊,好吧,v1.5.1。是相当古老的,没有块参数。查看我的编辑以访问旧版本的父级上下文。 –

+0

谢谢{{#if ../isEdittable}}适合我 –