Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   И снова ngModelController (https://javascript.ru/forum/angular/50875-i-snova-ngmodelcontroller.html)

dtzscln 15.10.2014 14:00

И снова ngModelController
 
Хочу в своей кастомной директиве получить значение модели, т.е. как-то так:
<input type="radio" value="1" ng-model="age" my-custom>

app.directive("myCustom", function() {
   return {
      require: "ngModel",
      link: function(scope, elem, attrs, ngModel) {
         console.log(ngModel.$modelValue);  // always NaN :(
      }
   };
});

Но всегда получаю NaN
Даже если в контроллере задать $scope.age = 1;
Как же мне получить $modelValue?

MetaDriver 17.10.2014 15:25

Цитата:

Сообщение от dtzscln (Сообщение 335676)
Как же мне получить $modelValue?

А где его нужно получить?

dtzscln 21.10.2014 13:39

Цитата:

Сообщение от MetaDriver (Сообщение 336220)
А где его нужно получить?

Внутри директивы, как я указал в примере выше.

MetaDriver 21.10.2014 17:28

Цитата:

Сообщение от dtzscln (Сообщение 336761)
Внутри директивы, как я указал в примере выше.

Рано.

Moonlight 25.10.2014 10:28

Вот так должно работать:

console.log($scope.age);

dtzscln 27.10.2014 09:17

Цитата:

Рано.
Вы про параметр директивы priority?

Цитата:

console.log($scope.age);
Так будет работать, но такая директива будет не пригодна для повторного использования на других элементах с другими ng-model

nerv_ 27.10.2014 09:22

scope.$watch(attrs.ngModel, function(value) {
    console.log(value);
});

var value = scope.$eval(attrs.ngModel);

var getter = $parse(attrs.ngModel).bind(null, scope);

MetaDriver 27.10.2014 21:51

Цитата:

Сообщение от dtzscln (Сообщение 337765)
Вы про параметр директивы priority?

Я про то, что при линковке значение ngModel ещё недоступно (ещё не связалось со $scope). Добывайте это значение динамически в контроллере. nerv_ указал правильный путь (насчёт конкретной реализации - на его совести :)).

nerv_ 28.10.2014 17:23

Вспомнил, где я видел ТС. Это тот чел, кот. ни привета, ни ответа, ни спасибо не говорит.
Что ж, будет сам на свои вопросы отвечать :)


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