Пожалуйста, имейте в виду, что я новичок в Угловое так что это не может быть лучшим ответом.
Я думаю, что независимо от того, что делает плагин Switch, это предотвращает изменение значения на флажке (или распространяется на угловое).
Я думаю, что вы можете сделать это по вашей директиве, связать что-то с событием изменения и использовать область выделения в директиве, чтобы сделать двустороннюю привязку к переменной из элемента управления.
HTML:
<div class="switch" init-switch switch-variable="testSwitch">
<input type="checkbox" id="check">
</div>
Переключатель переменным будет делать 2-полосные связывания с директивой
Директива:
app.directive('initSwitch', function() {
return {
scope: {
switchVariable: '=' //this is how you define 2way binding with whatever is passed on the switch-variable attribute
},
link: function (scope, element, attr) {
scope.$evalAsync(function() {
element.switch();
});
element.on("change", function(){
if(scope.switchVariable)
scope.switchVariable = !scope.switchVariable
else
scope.switchVariable = true;
scope.$apply(); //I believe you need this to propagate the changes
});
}
}
});
Edit:
Согласно вашему первому комментарий, вы можете попытаться изменить событие директивы для:
element.on("change", function(){
if(element.children('.switch-off')[0]) //Looking for the class that determines to what side the switch is
scope.switchVariable = false;
else
scope.switchVariable = true;
scope.$apply(); //I believe you need this to propagate the changes
});
Что касается второго пункта, если вы установите флажок установлен, то нуждается в вашей функции ссылку, чтобы узнать состояние чекбокса:
scope.$evalAsync(function() {
scope.switchVariable = element.children()[0].checked; //check if checkbox is checked (before the plugin changes the DOM
element.switch(); //initialize the plugin
});
Что именно вы хотите показать и скрыть? потому что единственное, что я вижу, это набор полей с меткой и флажком. – user3811714
Если вы говорите о флажке в контакте/помощи, то он работает отлично. –
ваш причудливый переключатель вообще не переключается, см. Здесь http://plnkr.co/edit/VaqEOLhJMVa4jvCmqKx8?p=preview – sylwester