2014-02-21 6 views
16

Я знаю, что существует метод .set(), чтобы установить логическое значение true или false, но я хочу знать, существует ли такой метод, как .set(), кроме него. Переключает значение булева.Javascript/Ember - Toggle Boolean Значение переменной

В этом случае значение boolean 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}} 

ответ

42
this.toggleProperty('propertyName'); 

Edit: jsbin for proof

+0

Спасибо, гравитация. Это то, что я искал, но решение Раджеша также работало –

+1

Это самый сжатый метод. – Jason

+0

Итак, вы проголосовали? но я дал ответ, который хотел OP. – Triode

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

Toggling логическое значение является то, что вам нужно. Или yu может изменить вашу функцию, как показано ниже.

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

category.set ('isEditing',! IsEditing); приводит к «Неподчиненное ReferenceError: isEditing не определено» –

+1

См. отредактированный ответ. – Triode

+0

Отредактированный ответ сработал! Огромное спасибо: D –

0

@ ответ gravityplanx является большим.

Я просто хочу добавить, что эта методология работает и за контроллером.

Например, если у моей модели есть объект Post, я могу обновить его с контроллера. Мне просто нужно передать объект в действие контроллера.

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

'toggleFood (еда) {food.toggleProperty ('available')}' - на самом деле не работает для меня ... похоже, что @gravityplanx выбрал одну небольшую часть вопроса и ответил на нее, но не в контексте. – sheriffderek

Смежные вопросы