在AngularJS中,如何确定是否为组件提供了属性?

时间:2017-05-26 19:16:54

标签: javascript angularjs angularjs-components

我有一个AngularJS 1.5组件,它将可选的回调函数作为属性绑定。我想确定是否包含该属性。

<silly-button></silly-button> <!-- Don't Click Me! -->
<silly-button on-silly-click="handleClick()"></silly-button> <!-- Click Me! -->

鉴于下面的简单示例,我如何实现onClickIsNotProvided()函数?

angular
  .module('example')
  .component('sillyButton')
  .bindings({
    onSillyClick: '&'
  })
  .controller(['$scope', ($scope) => {
    $scope.onClickIsNotProvided = () => {
      // this.onSillyClick is always defined, so return value is always false :(
      return !this.onSillyClick;
    };
  }])
  .template(`
    <button ng-click="$ctrl.onSillyClick()">
      <span ng-if="onClickIsNotProvided()">Don't</span>
      Click Me!
    </button>
  `);

2 个答案:

答案 0 :(得分:1)

您可以使用与&?相同的=?@?来标记该参数是否可选。

可以在here中找到一些参考资料。虽然它没有具体谈论可选功能绑定。

答案 1 :(得分:0)

我认为这是你必须添加的功能:

{{1}}

这将与控制器的其他角度进入相同的位置。