【问题标题】:Javascript/Ember - Toggle Boolean Value of VariableJavascript/Ember - 切换变量的布尔值
【发布时间】:2014-02-21 18:18:45
【问题描述】:

我知道有 .set() 方法可以将布尔值设置为 true 或 false,但我想知道是否有类似 .set() 的方法,除了它切换布尔值。

在这种情况下,布尔值 isEditing 被设置为“true”。

isEditing:false,
actions: {
  edit: function(category){
    category.set('isEditing', true);
    console.log(this.get('isEditing'))
  },
}

这里是html

{{#if isEditing}}
  <div class="category-text"> 
    {{view Ember.TextField valueBinding=name action="turnOffEditMode"}}
  </div>
{{else}}
  <div class="category-text"> 
    {{#linkTo 'category' this}}
      {{name}}
    {{/linkTo}}
  </div>
{{/if}}  

【问题讨论】:

    标签: javascript html ember.js boolean toggle


    【解决方案1】:
    this.toggleProperty('propertyName');
    

    编辑:jsbin for proof

    【讨论】:

    • 谢谢你,重力。这是我一直在寻找的,但 Rajesh 的解决方案也很有效
    • 这是最简洁的方法。
    • 他问是否有除了set之外的方法,这就是那个方法。对不起。
    • "我想知道是否有类似 .set() 的方法,除了它切换布尔值"
    • 可以在这里定义方法吗?
    【解决方案2】:
    isEditing:false,
    actions: {
        edit: function(category){
            category.set('isEditing', !category.isEditing);
            console.log(this.get('isEditing'))
        }
        toggleEditing : function(category){
        }
    }
    

    切换布尔值是您所需要的。或者你可以改变你的功能,如下所示。

    isEditing:false,
    actions: {
        toggleEditing : function(category){
            category.set('isEditing', !category.isEditing);
            console.log(this.get('isEditing'));
        }
    }
    

    【讨论】:

    • category.set('isEditing', !isEditing);导致“Uncaught ReferenceError: isEditing is not defined”
    • 为什么这被否决了?如果你能提供一个理由就太好了
    • 我对这个和你之前的评论投了赞成票。我没有足够的代表投票反对。向仇恨者重申,此解决方案有效。 ;)
    • this.toggleProperty 更适合这种情况。我认为@gravityplanx 的答案更好。
    • 另外,如果要显式执行,需要使用get而不是直接获取值category.set('isEditing', !category.get('isEditing'))
    【解决方案3】:

    @gravityplanx 的回答很棒。

    我只想补充一点,这种方法也适用于控制器之外。

    例如,如果我的模型有一个Post 对象,我可以从控制器更新它。我只需要将对象传递给控制器​​动作。

    switch_readiness(post) {
        post.toggleProperty('isPublishReady');
    }
    

    【讨论】:

    • toggleFood(food) { food.toggleProperty('available') } - 对我来说真的不起作用......似乎@gravityplanx 挑选了一小部分问题并回答了它 - 但不是在上下文中。
    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多