В директиве используется ng-model. Нужно чтобы при определенном событии на элементе (пусть при щелчке для примера) менялся параметр первого элемента модели. Есть два варианта, как это сделать:
require: '?ngModel',
link: function (scope, element, attrs, ngModel) {
element.bind('someevent', function (e) {
//1 вариант
if (typeof ngModel.$modelValue === 'object') {
ngModel.$modelValue[0].active = true
ngModel.$setViewValue(ngModel.$modelValue)
scope.$apply()
}
//2 вариант
if (typeof scope[attrs.ngModel] === 'object') {
scope[attrs.ngModel][0].active = true
scope.$apply()
}
})
})
Оба варианта работают, тем не менее, какой предпочтительней?
Но работают они не всегда. При первой загрузке они уже и так находятся в цикле $digest (соответственно, $apply не нужен) и тут проблема: срабатывают они через раз. Т.е. вид может обновиться, а может и нет, как повезет. Какие есть мысли по этому поводу?