Angularjs Angular 1.5组件绑定:检查是否存在回调

Angularjs Angular 1.5组件绑定:检查是否存在回调,angularjs,angularjs-directive,angularjs-components,angularjs-bindings,Angularjs,Angularjs Directive,Angularjs Components,Angularjs Bindings,我有一个简单的contactList组件,它有两个绑定:contacts和onRemove 联系人只是要显示的联系人数组 onRemove是一个回调函数 app .component('联系人列表'{ 模板: ` {{c.name}} 去除 `, 绑定:{ 联系人:“最简单的方法是检查属性是否已定义。在控制器中注入$attrs,然后可以执行以下操作: if( $attrs.onRemove ) { //Do something } 使用&绑定将包装函数,以便保留对传递方法的原始$scope

我有一个简单的
contactList
组件,它有两个绑定:
contacts
onRemove

  • 联系人
    只是要显示的联系人数组
  • onRemove
    是一个回调函数
app
.component('联系人列表'{
模板:
`
{{c.name}}
去除
`,
绑定:{

联系人:“最简单的方法是检查属性是否已定义。在控制器中注入
$attrs
,然后可以执行以下操作:

if( $attrs.onRemove ) { //Do something }

使用
&
绑定将包装函数,以便保留对传递方法的原始
$scope
的引用,即使未定义。

在组件上执行函数onRemove,以允许获取是否在参数中传递了函数。因此,您可以使用ng if=“$ctrl.onRemove()”

组件('contactList'{
模板:
`
{{c.name}}
去除
`,
绑定:{

联系人:“
console.log(this.onRemove());
当我在remove=“…”
上向
传递某个函数时,会在代码中的某个地方引发异常,但当它未定义时,它会打印
未定义的
。请如何定义回调函数绑定?请参阅本文,它回答了您的问题
component('contactList', {
template: 
  `<div ng-repeat="c in $ctrl.contacts">
     {{c.name}}
     <div ng-click="$ctrl.onRemove()({contact: c})" ng-if="$ctrl.onRemove()">Remove</div>
   </div>`,
bindings: {
  contacts: '<',
  onRemove: '&'
},
controller: function() {
  console.log(this.onRemove);
  console.log(this.onRemove());
}
})