2017-02-10 38 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)的性质,并且您可能不会编写与控制器读取的变量相同的变量。

相关问题