Существует следующий код пользовательской директивы:Как изменить значение области ng-модели в пользовательской угловой директиве?
angular.module('app.directives', ['ng']).directive('liveSearch', [
'$compile', '$timeout', function($compile, $timeout) {
return {
restrict: 'E',
replace: true,
require: 'ngModel',
scope: {
ngModel: '=',
liveSearchCallback: '=',
liveSearchSelect: '=?',
liveSearchItemTemplate: '@',
liveSearchWaitTimeout: '=?',
liveSearchMaxResultSize: '=?',
liveSearchResultField: '=?'
},
template: "<input type='text' />",
link: function(scope, element, attrs, controller) {
scope.$watch('selectedIndex', function(newValue, oldValue) {
var item;
item = scope.results[newValue];
if (item) {
scope.ngModel = '10';
element.val(item[attrs.liveSearchResultField]
}
});
}
}}]);
Это не полный код моей директивы, но этого достаточно, чтобы понять проблему. Смотрите также код:
<live-search class="form-control" id="search1" live-search-callback="mySearchCallback" live-search-result-field="title"ng-model="skill" type="text"></live-search>
Value: {{ skill }}
<button class="btn btn-success" type="submit" ng-click="createEmployee">Сохранить</button>
Мой код контроллера:
$scope.createEmployee = function() {
console.log($scope.skill);
};
Как вы можете видеть, что мой заказ директива «нг-модель» атрибут с именем переменной «мастерства». Как изменить значение «умение» в моей настраиваемой директиве? Мой способ не работает. Заранее спасибо!
Ах, вы избили меня до ответа! Тем не менее, вы просто забыли включить часть '$ scope.watch', поскольку newValue не определена в вашем кодовом блоке. – yvesmancera
@yvesmancera, как вы и требовали :) –
Пожалуйста, скажите мне: я вижу изменения, но console.log ($ scope.skill) не определен по форме. Зачем? – malcoauri