2017-02-10 61 views
0

我需要從「padre控制器」更改mensaje變量並將其可視化。 並改變變量從「hijo控制器」和反之亦然,但它不工作如何從嵌套控制器更改變量的值並反之亦然

如果點擊「cambiar padre」值的變化,我在 「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

這並不是ACCES的正確方法來自另一個控制器的價值。如果您真的想在它們之間共享數據,則應使用服務來存儲該值,並且兩個控制器都可以更改該值。如果你真的想在控制器之間進行繼承,你應該試試this thread。 除此之外,我不確定「hijo」的父母是否會成爲「padre」,因爲您使用它作爲ion-*指令。爲什麼它不起作用的可能問題來自javascript(prototipical inheritance)的性質,並且您可能不會編寫與控制器讀取的變量相同的變量。

相關問題