Я знаю, что я могу использовать форматтеры и парсер в моей директиве, чтобы преобразовать мои данные, как это:Угловой Директивы: ngModelController пользовательская парсер не называется
//format text going to user (model to view)
ngModel.$formatters.push(function(value) {
return value.toUpperCase();
});
//format text from the user (view to model)
ngModel.$parsers.push(function(value) {
return value.toLowerCase();
});
Полного примера здесь http://plnkr.co/edit/i59xSdVPMxRkgERhj8RE?p=preview
Но я не могу заставить это работать, когда я использую шаблон внутри моей директивы. Мой пользовательский синтаксический анализатор не называется:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.data = { name: ''};
});
app.directive('changecase', function() {
return {
restrict: 'E',
require: 'ngModel',
scope: { model: '=ngModel' },
template: '<input type="text" ng-model="model"> {{ model }}',
link: function (scope, element, attrs, ctrl) {
//format text going to user (model to view)
ctrl.$formatters.push(function(value) {
return value.toUpperCase();
});
//format text from the user (view to model)
ctrl.$parsers.push(function(value) {
return value.toLowerCase();
});
}
}
});
С помощью этого HTML:
<body ng-controller="MainCtrl">
<changecase ng-model="data.name"></changecase>
<pre>model is: {{data.name}}</pre>
</body>
Я предполагаю, что это либо сфера или временная проблема, но я не могу работать его. Может ли кто-нибудь увидеть, что я делаю неправильно?
Не стесняйтесь возиться с Plunker здесь: http://plnkr.co/edit/FZ4UnW8wIhIwRV2jVvfB?p=preview
Это возможно в одной директиве, чтобы «ngModelController» пришел из шаблона ввода директивы? Я сделал +1 :) –
Вы спрашиваете, можете ли вы получить доступ к ngModelController из родительского элемента? Обычным способом «нет» - вы можете использовать некоторые трюки, но обычно это не стоит. –
Да, я спрашиваю, как получить это от родителя, что будет тогда? просто ради любопытства, я хотел знать ... Спасибо, так или иначе .. :) –