Показать сообщение отдельно
  #1 (permalink)  
Старый 03.08.2013, 00:03
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Изменение модели в директиве
В директиве используется 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 не нужен) и тут проблема: срабатывают они через раз. Т.е. вид может обновиться, а может и нет, как повезет. Какие есть мысли по этому поводу?
Ответить с цитированием