У меня проблема с обменом данными между контроллерами, я использовал сервис, кажется, работает, но что-то не работает должным образом.AngularJS - Обмен данными между двумя контроллерами, что не так?
Моя проблема: Когда я нажимаю на строку (в части ng-repeat), она правильно запускает служебную функцию (ui_mgmt), но не обновляет ui_controller (controller) $ scope.show_details var!
JS код
ui_service_f = function() {
//Service which should update Controller 1 var
this.show_details = "-1";
this.ui_mgmt = function(det,data) {
this.show_details = 1;
};
};
ui_controller =function($scope,ui_service) {
//Controller1
//I think this part is bugged
$scope.show_details = ui_service.show_details;
$scope.sub_bottom_menu = ui_service.sub_bottom_menu;
};
sim_list_placer =function($scope,service_sim,ui_service) {
//Controller2
$scope.ui_mgmt = function(a,b) {
ui_service.ui_mgmt(a,b);
};
};
HTML
<div ng-controller="sim_list_placer">
<button ng-click="reload_sim_list()">Reload</button>
<table class="td_mc_table">
<thead>
<td>pk</td><td>ICCID</td><td>Operatore</td>
<td>Numero Dati</td><td>PIN</td><td>PUK</td>
<td>Contratto</td><td>Costo</td><td>APN</td><td>Attivazione</td>
</thead>
<tbody>
<tr ng-repeat="sim in sim_list" ng-click="ui_mgmt(1,sim)">
<td>{{ sim.pk }}</td>
<td>{{ sim.sim_iccid }}</td>
<td>{{ sim.sim_operatore }}</td>
<td>{{ sim.sim_ndati }}</td>
<td>{{ sim.sim_pin }}</td>
<td>{{ sim.sim_puk }}</td>
<td>{{ sim.sim_contratto }}</td>
<td>{{ sim.sim_costo }}</td>
<td>{{ sim.sim_apn }}</td>
<td>{{ sim.sim_data_attivazione }}</td>
</tr>
</tbody>
</table>
</div>
<div ng-controller="ui_controller">
{{show_details}}
<div ng-if="show_details==1" class="td_mc_rightbar" >
Dettagli...
<div ng-switch="sub_bottom_menu">
<div ng-switch-when="sim_mgmt">
Blablablabla
</div>
</div>
</div>
</div>
Я что-то пропустил или .... ???
Спасибо совет :)
Андреа
Если бы это был я, я бы не передавал сферу обслуживания. Вместо этого у меня бы были методы, возвращающие обновленные данные '$ scope.someVar = service.getVar()'. Кроме того, поскольку вы выполняете неявное обновление данных другой области видимости, я думаю, вам может понадобиться '$ scope.digest()' – cYrixmorten