2016-06-28 8 views
1

にアクセスすることはできません。これは私の指示のコードで次のように角度トランスクルードディレクティブに - それの内部モデルのthatsに

'use strict'; 

demo.directive('myModal', function($parse) { 
    return { 
     restrict: 'A', 
     transclude: true, 
     scope: '@', 
     template: '<div ng-transclude><h4>Please enter value</h4></div>' 
    } 
}); 

使い方は次のとおりです。

<!-- myModal directive --> 
<div my-modal> 
    <input type="text" ng-model="myTest" /> 
    <input type="button" ng-click="getMyTest()" value="Get Value" /> 
</div> 

そしてラップ私のメインコントローラ、アプリケーション全体では、これを含まれています

demo.controller('MainCtrl', function($scope) { 

    $scope.getMyTest = function(){ 
    alert($scope.myTest); 
    } 

}); 

私はmyTest?にアクセスすることができない理由を任意のアイデアを

JsFiddle:http://jsfiddle.net/sZZEt/679/

答えて

1

あなたは、ドット表記を使用する必要があります。

demo.controller('MainCtrl', function($scope) { 
    $scope.data = {}; 

    $scope.getMyTest = function(){ 
    alert($scope.data.myTest); 
    } 
}); 

<div my-modal> 
    <input type="text" ng-model="data.myTest" /> 
    <input type="button" ng-click="getMyTest()" value="Get Value" /> 
</div> 

JSFIDDLE

トランスクルーは、あなたがドット表記を使用する必要がある理由だと、子スコープを作成し、 ng-modelの場合

+0

それは唯一の回避策ですか? – user3800799

+0

いいえ、移譲を使用している限り。 –

1

はこれを試してみてください。モデル要素にディレクティブを追加します。

<div> 
    <input my-modal type="text" ng-model="myTest" /> 
    <input type="button" ng-click="getMyTest()" value="Get Value" /> 
</div> 
+0

これはうまくいきますが、悲しいことに、私の指示が意味するものについては実際的な解決策ではありません。依存度が高すぎます。しかし、私は理論的にはディレクティブコントローラ自体でそれを行うことはできますか?いいえ、ありがとうございます。 – user3800799

関連する問題