it-swarm.com.de

Javascript/Ember - Boolescher Wert der Variablen umschalten

Ich weiß, dass es die .set () -Methode gibt, um einen Boolean auf true oder false festzulegen, aber ich möchte wissen, ob es eine Methode wie .set () gibt, mit der Ausnahme, dass der Wert eines Boolean geändert wird.

In diesem Fall wird das boolean isEditing auf 'true' gesetzt.

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

Hier ist die 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}}  
18
Ian S
this.toggleProperty('propertyName');

Edit: Jsbin zum Beweis

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

Sie müssen den booleschen Wert umschalten. Oder Sie können Ihre Funktion wie folgt ändern.

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

@ gravityplanx's Antwort ist großartig.

Ich möchte nur hinzufügen, dass diese Methode auch über den Controller hinaus funktioniert.

Wenn mein Modell beispielsweise ein Post-Objekt hat, kann ich es vom Controller aus aktualisieren. Ich muss das Objekt nur an eine Controller-Aktion übergeben.

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