Model view controller emberjs{{{#if variable}}布尔值不会显示为true
当 {{操作“编辑”此}}按钮被单击 单击“编辑”时,变量不会将自身设置为true。我将控制台.log'd设置为确保“编辑”知道我正在单击它,它确实这样做了。这在emberjs网站上看起来很简单,我不知道为什么我现在有这样的麻烦 类别控制器Model view controller emberjs{{{#if variable}}布尔值不会显示为true,model-view-controller,ember.js,controller,conditional,handlebars.js,Model View Controller,Ember.js,Controller,Conditional,Handlebars.js,当 {{操作“编辑”此}}按钮被单击 单击“编辑”时,变量不会将自身设置为true。我将控制台.log'd设置为确保“编辑”知道我正在单击它,它确实这样做了。这在emberjs网站上看起来很简单,我不知道为什么我现在有这样的麻烦 类别控制器 VpcYeoman.CategoriesController = Ember.ArrayController.extend({ isEditing: false, actions: { editingyeah: functio
VpcYeoman.CategoriesController = Ember.ArrayController.extend({
isEditing: false,
actions: {
editingyeah: function(){
console.log('Testing console'); //this works
this.set('isEditing', true); //this doesnt change to true since the {{Else}} is what is being rendered.
}
},
});
类别.哈佛商学院
{{#each}}
<tr class="people-list">
<td>
{{#if isEditing}}
{{view Ember.TextField valueBinding=name}}
NOOOOOOOO
{{else}}
<div class="category-text">
{{view Ember.TextField valueBinding=name}}
{{#linkTo 'category' this}}
{{name}}
{{/linkTo}}
</div>
{{/if}}
<img class="table-img" src="images/x.png">
<img class="table-img" {{action "editingyeah" this}} src="images/pencil-grey.png">
</td>
</tr>
{{/each}}
{{#each}
{{#如果是编辑}
{{view Ember.TextField valueBinding=name}
不
{{else}
{{view Ember.TextField valueBinding=name}
{{{#链接到“类别”this}
{{name}}
{{/linkTo}
{{/if}
{{/每个}}
在我发表评论后,我看到了您的问题。您的作用域中没有定义isEditing
变量。您正在使用#each
帮助程序,它会更改模板的范围。使用#each
时必须保留作用域,或者使用带有帮助程序的#
{{#each item in model}}
{{! isEditing is available now }}
{{! But you have to do item.name instead of name}}
{{/each}}
或
在我发表评论后,我看到了你的问题。您的作用域中没有定义isEditing
变量。您正在使用#each
帮助程序,它会更改模板的范围。使用#each
时必须保留作用域,或者使用带有帮助程序的#
{{#each item in model}}
{{! isEditing is available now }}
{{! But you have to do item.name instead of name}}
{{/each}}
或
这是因为您正在循环遍历每个类别,因此每个
帮助器中的上下文就是您的类别。它正在查找类别上的isEditing
属性,而不是控制器中的属性
由于要将类别传递给操作,因此可以将其作为操作函数中的参数进行访问,并改为设置类别的属性:
actions: {
editingyeah: function(category){
category.set('isEditing', true);
}
}
这是因为您正在循环遍历每个类别,因此每个
帮助器中的上下文就是您的类别。它正在查找类别上的isEditing
属性,而不是控制器中的属性
由于要将类别传递给操作,因此可以将其作为操作函数中的参数进行访问,并改为设置类别的属性:
actions: {
editingyeah: function(category){
category.set('isEditing', true);
}
}
是否未设置值,或模板是否未更新?尝试在设置后直接执行console.log(this.get('isEditing'))
。控制台返回“true”。I编辑是真的。{{#if isEditing}也应该为true并呈现第一个Ember.TextField吗?该值是否未设置,或者模板是否未更新?尝试在设置后直接执行console.log(this.get('isEditing'))
。控制台返回“true”。I编辑是真的。是否应该{{if isEditing}也为true并呈现第一个Ember.TextField?+1您可以这样做,或者您可以指定一个项(对象)控制器。我倾向于避免修改集合(数组)控制器中的单个项属性,因为它可能会变得有点混乱。+1您可以这样做,也可以指定一个项(对象)控制器。我倾向于避免修改集合(数组)控制器中的单个项属性,因为它可能会变得有点混乱。此解决方案也有效,但我最终使用了上面的解决方案此解决方案也有效,但我最终使用了上面的解决方案