web-dev-qa-db-ja.com

Javascript / Ember-変数のブール値を切り替え

ブール値をtrueまたはfalseに設定する.set()メソッドがあることは知っていますが、それ以外の.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}}  
22
Ian S
this.toggleProperty('propertyName');

編集: 証明のためのjsbin

51
Jake Roby
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'));
    }
}
4
Triode

@gravityplanxの答えは素晴らしいです。

この方法論はコントローラーを超えて機能することも付け加えておきます。

たとえば、モデルにPostオブジェクトがある場合、コントローラーから更新できます。オブジェクトをコントローラーアクションに渡すだけです。

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