从其控制器获取 angular 组件的绑定对象值

Get bound object value of angular component from its controller

我有一个 angular 组件:

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 undefinedold undefined 尽管如果我将 $scope.$watch('vulnerability' 更改为 $scope.$watch('nonsense') 它仍然会触发一次日志每个组件。

如果不应该更改该值,则应绑定一次,vulnerability="::vulnerability"。这为问题提供了上下文(并且还节省了一些优化时间)。

在这种情况下,可以使用 $onInit 钩子:

...
controller: function() {
   this.$onInit = function () {
     this.vulnerability
   }
},