2017-02-10 14 views
0

Мне нужно изменить переменную mensaje из «padre controller» и визуализировать ее. и изменить переменную из «контроллера Hijo» и наоборот, но это не работаетКак я могу изменить значение переменной из вложенного контроллера и наоборот?

если щелчок в «Cambiar падре» изменение значения, если щелчок в «Cambiar Desde эль Hijo», он работает, но когда Я снова нажмите на "Cambiar Desde эль падре" он больше не работает

JS

angular.module('starter.controllers', []) 

    .controller('padre', function ($scope) { 

    $scope.mensaje = "hola"; 

    $scope.cambiarPadre = function() { 
     $scope.mensaje = "texto modificado desde el padre"; 
    }; 


    }) 

    .controller("hijo", function ($scope) { 


    $scope.cambiarHijo = function() { 
     console.log('entro a cambiar hijo : '); 

     $scope.mensaje = "texto modificado desde el hijo"; 
    }; 

    $scope.cambiarPadreDesdeHijo = function() { 
     console.log('entro a cambiar hijo : '); 

     $scope.$parent.mensaje = "texto modificado desde el hijo"; 
    }; 

    }) 

HTML

<ion-view view-title="Dashboard" ng-controller="padre as p"> 
    <ion-content class="padding"> 

    DEL PADRE 
    <br> 

    padre:{{mensaje}} 
    <br> 
    hijo:{{mensaje}} 

    <br> 
    <br> 


    <button ng-click="cambiarPadre()">cambiar desde el padre</button> 


    <div ng-controller="hijo as h"> 

     DEL HIJO sin nada 
     <br> 
     sin parent: 
     <br> 
     padre:{{mensaje}} 
     <br> 
     hijo:{{mensaje}} 

     <br> 
     <br> 

     con parent: 
     <br> 
     padre:{{$parent.mensaje}} 
     <br> 
     hijo:{{$parent.mensaje}} 
     <br> 

     <button ng-click="cambiarHijo()">cambiar desde el hijo</button> 
     <br> 

     <br> 
     <button ng-click="cambiarPadreDesdeHijo()">cambiar padre desde hijo</button> 
    </div> 


    </ion-content> 
</ion-view> 
+0

сделать их компонентами и передать реквизиты с '=', прекратить использование 'ng-controller' –

ответ

1

это не правильный способ доступом s значение от другого контроллера. Если вы действительно хотите обмениваться данными между ними, вы должны использовать службу для хранения значения, и оба контроллера могут изменить это значение. Если вы действительно хотите наследовать между контроллерами, вы должны попробовать что-то от this thread. Помимо этого, я не уверен, что родителем «hijo» будет «padre», потому что вы используете его в виде иона- * директив. Возможная проблема, почему она не работает, связана с природой javascript (prototipical inheritance), и вы, вероятно, не записываете ту же переменную, которую читает контроллер.