Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Завести ajax поле под валидацию (https://javascript.ru/forum/angular/56555-zavesti-ajax-pole-pod-validaciyu.html)

borodatych 22.06.2015 13:41

Завести ajax поле под валидацию
 
Доброго времени суток.

Делаю запрос о получении доступных способов оплаты.
Для некоторых приходят доп.поля, к примеру QIWI - номер телефона.
Не знаю как такое поле ввести под валидацию.

Для начало как и когда можно присвоить и можно ли вообще значение такому полю?

HTML:
<div id="payments">
    <div class="tl mb20" payments-directive ng-repeat="payment in payments track by $index">
        <span class="a2dCheckBox alignMiddle anime mr30" id="a2dCheckBox{{ payments[$index].id }}" data-discount="{{ payments[$index].discount }}" ng-click="setPayment(payment)"></span>
        <img width="32" alt="{{ payments[$index].name }}" src="{{ payments[$index].icon }}">
        <label class="cGrey ml10">{{ payments[$index].name }}</label>
        <span class="red ml10" ng-if="payments[$index].discount>0">{{ payments[$index].extra }}</span>
        <div
            ng-if="payments[$index].addFields.length>0"
            ng-bind-html="getHtmlContent(payments[$index].addFields)"
            id="payDesc{{ payments[$index].id }}" class="payDesc" style="display:none;"
        >addFields</div>
    </div>
</div>

JS:
$scope.getPayments = function(){
    if( $scope.calc.$valid ){

        $http({
            url: url,
            method: "GET",
            data: {},
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' }

        }).success(function(data){

            $scope.payments = data.payments;

            $scope.payment.qiwi = '9876543210';
            $scope.payment.wmid = '1234567890';

            $timeout(function(){
                $scope.$apply(function(){
                    $scope.payment.qiwi = '9876543210';
                    $scope.payment.wmid = '1234567890';
            });
        });

    });
                }
};


addFields с сервера для QIWI:
<b>+7&nbsp;&nbsp;</b><input 
	type="text" name="phone_for_qiwi" class="field_text" id="phone_for_qiwi" value="" 
	ng-show="showQIWI" show-valid 
	ng-model="payment.qiwi" 
	ng-click="alertQIWI()" 
>
<br/>
QIWI - Электронная платёжная система. Оплата в терминалах и через QIWI Кошелек.



Вообще ни чего не работает, ни ng-click, ни значение не присваивается, ни валидация...

borodatych 23.06.2015 11:08

UPD1:
console.log($scope.payment.qiwi) показывает значение, но ng-model="payment.qiwi" не подхватывает его.

ksa 23.06.2015 14:17

Цитата:

Сообщение от borodatych
console.log(payment.qiwi) показывает значение, но ng-model="payment.qiwi" не подхватывает его.

Потому как
ng-model="payment.qiwi"

Это
$scope.payment.qiwi

borodatych 23.06.2015 14:20

Цитата:

Сообщение от ksa (Сообщение 376205)
Потому как
ng-model="payment.qiwi"

Это
$scope.payment.qiwi

И?

ksa 23.06.2015 14:23

Цитата:

Сообщение от borodatych
И?

Вроде как ответ на твой вопрос я дал выше... :D

borodatych 23.06.2015 14:54

Прошу прощения, в голове одно, на бумаге друге, естественно так:
console.log($scope.payment.qiwi) показывает значение, но ng-model="payment.qiwi" не подхватывает его.

ksa 23.06.2015 15:05

borodatych, тут бы тебе сделать полный тестовый пример... Может ты просто не попадаешь в нужную область видимости для
ng-model="payment.qiwi"

borodatych 23.06.2015 15:11

Данные получаю со сервера, вроде писал.
Вот часть кода, вдруг поможет прояснить.

ksa 23.06.2015 15:13

Цитата:

Сообщение от borodatych
Вот часть года, вдруг поможет прояснить.

Не то это все... Не то... :(

Всегда можно сделать простенький тестовый пример... Даже с простенькой "эмуляцией" ответа сервера...
В портянках кода нет желания копаться. :no:

ksa 23.06.2015 15:17

Цитата:

Сообщение от borodatych
addFields с сервера для QIWI:
<b>+7&nbsp;&nbsp;</b><input 
	type="text" name="phone_for_qiwi" class="field_text" id="phone_for_qiwi" value="" 
	ng-show="showQIWI" show-valid 
	ng-model="payment.qiwi" 
	ng-click="alertQIWI()" 
>
<br/>
QIWI - Электронная платёжная система. Оплата в терминалах и через QIWI Кошелек.

Ты это прям куском когда-то вставляешь на страницу? :)

Сделай это сразу. А показывай по мере надобности... Т.о. Ангулар будет точно знать про эти элементы.


Часовой пояс GMT +3, время: 17:30.