У меня есть следующая проблема с угловыми пользовательскими директивами. У меня модальный диалог, который заполняется элементами ввода. Эти входные элементы заполняются с помощью угловой директивы ng-repeat, подобной этой
<div ng-repeat="item in params">
<label>{{item.nombre}}{{item.valor}}</label>
<div class="input-group" ng-if="item.tipo=='DATE'">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
<input type="text" name="{{item.nombre}}" class="form-control reportesFechas" ng-model="item.valor"
data-custom-datepicker data-date-format="dd/mm/yy" id="{{item.nombre}}">
</div>
</div>
data-custom-datepicker - мой пользовательский атрибут. Модель params заполняется через вызов службы на бэкэнд java, как это
appbsReportsParamsService.query({
q: "idReport="+id
}, function(data){
$scope.params = data.content;
})
Сервисный вызов работает нормально, потому что окончательный HTML является "правильным" с точки зрения генерируемых входов. Однако data-custom-datepicker не применяется. Это генерируемая часть HTML-ng-repeat:
<div class="input-group ng-scope" ng-if="item.tipo=='DATE'">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
<input type="text" name="fecDesde" class="form-control reportesFechas hasDatepicker ng-pristine ng-valid ng-touched" ng-model="item.valor" data-custom-datepicker="" data-date-format="dd/mm/yy" id="fecDesde">
</div>
<div class="input-group ng-scope" ng-if="item.tipo=='DATE'">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
<input type="text" name="fecHasta" class="form-control reportesFechas hasDatepicker ng-pristine ng-valid ng-touched" ng-model="item.valor" data-custom-datepicker="" data-date-format="dd/mm/yy" id="fecHasta">
</div>
Поэтому в основном я хочу знать, как применить директиву после вызова службы асинхронного вызова для заполнения модели.
Хорошо, проблема заключалась в том, что я запускал директивный код под фазой "компиляция". Я меняю его на "пост", теперь все работает нормально. Проблема заключается в угловом рабочем процессе (не проблема, но где мое заблуждение было). Этот пост помог мне понять.
Попробуйте добавить $ scope. $ Apply() в ваш вызов службы после $ scope.params = data.content.
Поскольку ваш запрос службы params выполняется за пределами области $ в Angular, применяя $ apply, принудительно обновляет $ scope.
Посмотрите, поможет ли это.
appbsReportsParamsService.query({
q: "idReport="+id
}, function(data){
$scope.params = data.content;
$scope.$apply();
});