2015-09-02 3 views
0

У меня есть директива, которая обновляет связанное свойство, но никогда не обновляет исходное свойство!AngularJS двусторонняя привязка данных в директиве не работает

directives.directive('recordVideo', [function() { 
    return { 
     scope: { 
      showRecordVideo: '=' 
     }, 
     controller: "recordVideoController as ctrl", 
     templateUrl: '/views/recordvideo.html' 
    }; 
}]); 

<record-video data-show-record-video="showAddScheduleDialog"></record-video> 

Когда я установил $scope.showAddScheduleDialog = true в родительском контроллере, директива видит изменения и показывает диалог. Когда сам диалог устанавливает свое свойство $scope.showRecordVideo = false связанное свойство на родительском контроллере showAddScheduleDialog никогда не обновляется!

Почему это?

Я попытался поставить $scope.$watch как на родительский контроллер, так и на директиву. Изменения распространяются только на директиву и никогда не возвращаются к контроллеру!

+0

Put некоторые JSFIddle, чтобы помочь , – Joy

+0

Пожалуйста, пройдите через [это] (http://jsfiddle.net/HarshMehta/6zf6ndtx/). Вы получите то, что вам не хватает в настоящее время ... – road2victory

ответ

1

Проблема вызвана наследованием прототипа javascript (the long answer). Обычный хак изменить свойство внутри:

Это остается неизменным:

scope: { 
    showRecordVideo: '=' 
}, 

В контроллере:

$scope.showRecordVideo = { 
    state: true 
}; 

В модальной:

$scope.showRecordVideo.state = false; 
+0

Не знаю, как я пропустил это, спасибо – Chris

Смежные вопросы