2015-11-18 5 views
1

У меня есть свойство («toggleChecked»), измененное с помощью кнопки переключения, что необходимо сделать, когда я нажимаю переключатель. Мне нужно сбросить значение переключения без вызова функции наблюдателя.Как не вызывать уведомление об изменении в наблюдаемом свойстве в Polymer?

<dom-module id="custom-element"> 
<template> 
    <paper-toggle-button checked="{{toggleChecked}}">Toggle</paper-toggle-button> 
</template> 
<script> 
    Polymer({ 
    properties: { 
     toggleChecked: { 
     type: Object, 
     observer: 'toggleCheckedChanged' 
     } 
    }, 
    toggleCheckedChanged: function(value) { 
     // do some stuff... 
    }, 
    resetToggleChecked: function(value) { 
     // change the value, but don't activate the observer function! 
     this.toggleChecked = value; // ?? 
    } 
    }); 
</script> 
</dom-module> 

«resetToggleChecked» вызывается с неизвестным значением, и я должен быть уверен, что «toggleChecked» изменяется без делать «некоторые вещи». Я должен сделать «некоторые вещи» только тогда, когда я нажимаю переключатель с помощью мыши.

Есть ли способ изменить свойство без вызова наблюдаемой функции?

ответ

2

Проверка documentation, paper-toggle-button ы выделяют два различных события изменения:

  • change: сгорело, когда проверяются изменения состояния из-за взаимодействия с пользователем.
  • iron-change: Выключено, когда измененное состояние изменено.

Если вы свяжете обратного вызова в change случае только ваш обратный вызов будет работать только тогда, когда кнопка активно переключается из пользовательского ввода и не только тогда, когда базовое значение изменилось.

<dom-module id="custom-element"> 
<template> 
    <paper-toggle-button 
    on-change="_onChanged" 
    checked="{{toggleValue}}">Toggle</paper-toggle-button> 
</template> 
<script> 
    Polymer({ 
    properties: { 
     toggleValue: { 
     type: Boolean 
     } 
    }, 
    _onChanged: function(event) { 
     // This is called only when the paper-toggle-button changes 
     // via user interaction. 
     // do some stuff... 
    }, 
    resetToggleChecked: function(value) { 
     // This will cause the toggle's checked value to change 
     // without triggering the _onChanged handler. 
     this.toggleValue = value; 
    } 
    }); 
</script> 
</dom-module> 

Edit: исправлена ​​неправильная линия: на изменена = "{{_ OnChanged}}" с: на изменение = "_ OnChanged"

+0

Это хорошее решение, я не возражаю. Я предложил исправление: это свойство ** on-change ** для использования и без двойных фигурных скобок. Благодарю. – Rancid

+0

А, спасибо! Я использовал Polymer с самого раннего времени, и синтаксис изменился, поэтому я иногда ошибаюсь. – zacharytamas

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