0

私は角度のあるコンポーネントを持っています:

module.exports = {
    bindings: {
        vulnerability: '<',
    },
    controller: ['$scope', function($scope){
       //want to get value of vulnerability from above
       $scope.vulnerability  // doesn't work
    }],
};

私はng-repeatで参照しています

<div ng-repeat="vulnerability in vulnerabilities" class="vulnerability-item">
   <vulnerability-item  vulnerability="vulnerability"> </vulnerability-item>
</div>

ディレクティブが呼び出されると、脆弱性の値は変更されないため、その値を監視する必要はありません。設定された値を参照するだけです。

$scope.$watchそれが機能してトリガーされるかどうかを確認するためだけにプロパティを設定しましたが、ウォッチのハンドラーに新しい値または古い値が表示されなかったため、とにかく役に立ちませんでした。

私は試し$scope.vulnerability$ctrl.vulnerabilityみましたが、ディレクティブテンプレートでそのプロパティを参照する方法でしたが、どちらも機能しませんでした。渡されたバインドされた値を取得するにはどうすればよいですか?

この時計を追加:

    $scope.$watch('vulnerability', function (oldV, newV) {
        console.log('old', oldV)
        console.log('new', newV)
    })

コンポーネントの各インスタンスのコンソールにnew undefinedとを取得しますが、に変更しても、コンポーネントごとに 1 回ログが発生します。old undefined$scope.$watch('vulnerability'$scope.$watch('nonsense')

4

1 に答える 1

1

値を変更しない場合は、一度バインドする必要がありますvulnerability="::vulnerability"。これにより、質問にコンテキストが与えられます (また、最適化にかかる時間を節約できます)。

この場合、$onInitフックを使用できます。

...
controller: function() {
   this.$onInit = function () {
     this.vulnerability
   }
},
于 2016-11-29T03:14:26.370 に答える