Я создал палить, чтобы проиллюстрировать мой вопрос: http://plnkr.co/edit/qwxXzIgBdb3C8MH4FleG?p=previewОшибка двухсторонней передачи данных между директивой и контроллером. Зачем?
У меня есть директивы и контроллер. Я хотел бы отправить список пользователей из контроллера в директиву. Проблем нет.
app.controller('Controller',['$scope', function($scope){
$scope.users = [
{name:'Jason', id:'1'},
{name:'Kris', id:'2'},
{name: 'John', id:'3'}
];
$scope.activeUser = $scope.users[0];
}]);
app.directive('myDirective', function(){
return {
restrict: 'E',
scope: {
people: '=',
selectedUser:'=',
},
templateUrl:'directive.html'
};
});
В моем index.html Я связываю пользователей с людьми и activeUser с выбранным пользователем.
<my-directive people="users" selectedUser="activeUser"></my-directive>
Внутри директивы находится раскрывающийся список, в котором вы можете выбрать пользователя. Я привязываю модель тега select к selectedUser и, следовательно, к activUser (или, по крайней мере, это мое понимание. Это не работает так ясно, что я чего-то не хватает).
<select ng-options="person.name for person in people" ng-model='selectedUser'>
Когда я выбираю кого-то из выпадающего списка я ожидаю увидеть изменение отражается вне директивы в переменной activeUser, например, так:
<my-directive people="users" selectedUser="activeUser"></my-directive>
<p>outside of the directive:</p>
{{activeUser}}
Это не происходит, хотя. Почему нет?
P.S. Я хотел бы использовать ng-change, чтобы отключить HTTP-вызов в базе данных, поэтому я не могу использовать его для работы. Что еще более важно, что я действительно ДОЛЖЕН работать, и я хотел бы понять, почему это не так.
Благодарим за помощь!
Прохладный, что работает! У вас есть объяснение, почему то, как я пытался, не работает? Мне действительно кажется, что я по существу делаю selectedUser и activeUser той же переменной.Это имеет смысл во всех исследованиях, которые я провел вокруг «=». Очевидно, это не правильно. – Tenbrink
Только что обновил ответ на актуальную проблему. Не уверен, как я пропустил это, я думаю, я понял, что директива HTML не была бы проблемой! – lux