2015-09-10 13 views
5

私は別の入力を更新するはずの指令を持っています。指令内から他の要素のngモデルにアクセスする

しかし、私は以下のコード、accessOtherで

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() { 
}); 

ディレクティブ内から他の入力のNG-モデルにアクセスする方法を見つけることができませんディレクティブが#currentにありますが、#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

さらに、それはあまりにもディレクティブ内から#parentを変更することは可能でしょうか?

+0

3つの入力をすべて変更できます。私はあなたがしようとしていることを理解していません。一般的に –

+0

@Ursus私はそれらを指示**内から**に変更しようとしています – xiankai

答えて

4

作業デモ:Plunkerを確認してください。

は、ディレクティブにこれを追加します。

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

あなたがディレクティブのスコープオブジェクトに$parentプロパティを使用してparent scopeにアクセスすることができます。

関連する問題