2014-09-06 3 views
0

Я создаю директиву с выбранным списком, чтобы добавить динамически элементы.Как выбрать новый элемент, просто добавленный динамически в директиве select

Не работает следующее: Я добавляю элемент к модели массива, используемой в привязке моей модели ng-model-options. Элемент красиво добавлен в список , но это не выбрано. Вместо этого я продолжаю получать пустую строку. Я не могу найти способ установить ng-модель для вновь добавленного элемента.

Я пробовал область. $ Смотреть на мой список предметов внутри директивы, но, как ни странно, ничто не запускается, когда список элементов увеличивается на один новый элемент. И я не понимаю, почему: если список обновляется так должен scope.items, который должен вызвать рамки $ часы ...

scope.$watch('items', function(){ 
     scope.ngModel = scope.items[0]; 
}); 

Я сделал plunker, чтобы проиллюстрировать это:. plunker

Спасибо за помощь!

+0

Вы добавляете элементы внутри углового масштаба? Если для использования кода вне ангукара понадобится '$ apply()' – charlietfl

ответ

1

Это будет работать (documentation)

scope.$watch('items', function(){ 
     scope.ngModel = scope.items[0]; 
}, true); // Add third parameter true, this will make sure you check if the list 
      // has changed and not only if a new list was added 

// Without the third parameter: 
var list = []; 
list.push('test'); // won't call watch 

var list = ['test']; 
list = ['new array']; //will call watch 
+0

Awesome. Не знаете, где вы нашли это в документации .. но палец вверх для трюка! – vonwolf

+0

И вот оно: $ watch (watchExpression, listenener, [objectEquality]); Когда objectEquality == true, неравенство watchExpression определяется в соответствии с функцией угловых.равнов. – vonwolf

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