У меня есть следующий шаблон:Обновление значения модели на объект с неизвестным именем
<select
id="someSelect"
ng-model="component.picture"
ng-controller="someChildController"
size="12"
ng-options="img.url as img.name for img in image.list | filter:img.filter">
</select>
Важной частью является нг-модель. Я хочу сделать код как можно более удобным для использования, поэтому рассмотрим эту модель как та, которая может меняться в любое время. Вопрос в том, как изменить значение с контроллера, когда я не могу напрямую обновить $ scope.component.picture?
Есть ли способ получить объект модели элемента, независимо от его названия?
EDIT:
я, возможно, не было ясно. Рассмотрим случай, когда в другом месте приложения используется тот же шаблон, но с измененной моделью (так, нет component.picture). Но он все еще обернут дочерним контроллером, который обрабатывает обновления модели. Я не могу позвонить component.picture напрямую, потому что я не могу быть уверен, что он один в ng-model.
Если все остальное не получится, я, возможно, нужно сделать что-то вроде:
var _el = angular.element('#someSelect');
var path = _el.attr('ng-model').split('.');
var model = $scope;
var lastIndex = -1;
path.forEach(function(p, i) {
if(typeof model[p] === 'object') {
model = model[p];
lastIndex = i;
}
else return false;
});
model[path[lastIndex+1]] = "someNewValue";
Но это довольно некрасиво, поэтому я хотел бы знать, если есть лучший способ сделать это.
Использовать директиву с определенной областью –