2016-06-14 4 views
1

カスタムディレクティブの中から$modelValue$viewValueにアクセスしようとしているうちに、私はnullを取得しています。

var demo = angular.module('demo', []); 
 
demo.directive('dogInfo', function($parse) { 
 
    return { 
 
     restrict: 'E', 
 
     require: 'ngModel', 
 
     template: "<div> Dog's name: {{dogname}}<br>View Name: {{viewValue}}<br>Model Value: {{modelValue}}<br> Tag name: {{tagName}}</div>", 
 
     link: function (scope, element, attrs, controller) { 
 
      scope.viewValue = controller.$viewValue; 
 
      scope.modelValue = controller.$modelValue; 
 
      scope.tagName = controller.$name; 
 
     } 
 
    }}); 
 

 
function MyCtrl ($scope) { 
 
    $scope.dogname = 'Hero'; // now  
 
};
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script> 
 
<div ng-app='demo'> 
 
    <p ng-controller='MyCtrl'> 
 
     <dog-info ng-model="dogname" name="Doggggyyy"/>. 
 
    </p> 
 
</div>

私はこの出力を取得しています:

Dog's name: Hero 
View Name: null 
Model Value: null 
Tag name: Doggggyyy 

ここでフィドルです:http://jsfiddle.net/cxdun3y8/3/

答えて

1

は、このアプローチを試してみてください:

demo.directive('dogInfo', function($parse) { 
    return { 
     restrict: 'E', 
     require: 'ngModel', 
     template: "<div> Dog's name: {{dogname}}<br>View Name: {{model.$viewValue}}<br>Model Value: {{modelValue}}<br> Tag name: {{tagName}}</div>", 
     link: function (scope, element, attrs, controller) { 
      scope.model = controller; 
      scope.viewValue = controller.$viewValue; 
      scope.modelValue = controller.$modelValue; 
      scope.tagName = controller.$name; 
     } 
    }}); 

ビューにデータを渡す方法に注意してください

+0

私はそれを取得できません。コントローラのエイリアスを作成し、テンプレートのviewValueプロパティに直接アクセスしました。私のアプローチはなぜ機能しないのですか? – Daud

+0

私は基本的にリンク関数でviewValueが必要です。 – Daud

+0

最初のケースでは空の(今のところ)直接値へのリンクがあり、それだけで変更されるためです。 2番目のケースではオブジェクトを取得し、各ダイジェストで値が再表示されます。そして、いつも実際になるでしょう – Vitalii

関連する問題