2015-09-10 27 views
5

Ho una direttiva che dovrebbe aggiornare un altro input.Accesso al modello ng di altri elementi dall'interno della direttiva

Tuttavia, non riesco a trovare un modo per accedere alla ng-modello della altro ingresso dall'interno della direttiva

direttiva accessOther

angular.module('test', []) 
.directive('accessOther', function() { 
    return { 
    require: '?ngModel', 
    link: function(scope, elem, attr, ngModel) { 
     // ngModel here only refers to the current input 
     ngModel.$setViewValue('test'); 

     // how to get access/modify another input? (ie. #outside) 
    } 
    } 
}) 
.controller('parentController', function() { 
    var pc = this; 
    pc.data = {}; 
}) 
.controller('nestedController', function() { 
}); 

Nel codice qui sotto, L'accessOther la direttiva è in #current ma sta provando a cambiare #outside

<body ng-app="test" ng-controller="parentController as pc"> 
    <input type="text" ng-model="pc.data.parent" id="parent" placeholder="parent"> 

    <div ng-controller="nestedController as nc"> 
     <input type="text" ng-model="pc.data.outside" id="outside" placeholder="outside"> 
     <br> 
     <input type="text" ng-model="pc.data.current" id="current" access-other placeholder="current"> 
    </div> 
</body> 

plnkr: http://plnkr.co/edit/j34GKypDW4h6sZgsMCaA?p=preview

Inoltre, è possibile cambiare #parent dall'interno della direttiva troppo?

+0

Posso modificare tutti e tre gli ingressi. Non capisco cosa stai cercando di fare. In generale –

+0

@Ursus sto provando a cambiarli da ** all'interno della direttiva ** – xiankai

risposta

4

Verificare la demo di lavoro: Plunker.

Aggiungere questo alla direttiva:

scope.$parent.pc.data.outside = 'changed `outside` from directive'; 
scope.$parent.pc.data.parent = 'changed `parent` from directive'; 

è possibile accedere alla proprietà $parentparent scope utilizzando sull'oggetto direttiva ambito.

Problemi correlati