【问题标题】:How to make expression '&'-binding with optional initialization如何使用可选初始化进行表达式“&”绑定
【发布时间】:2018-03-30 07:06:17
【问题描述】:

我想初始化一个回调 &-property 绑定到一个返回 true 的函数(如果没有传递回调)。像这样的:

export const DatepickerInputComponent = {
    bindings: {
        validityCheck: '&',
    },
    templateUrl: './datepicker-input.component.html',
    controller: class DatepickerInputController implements ng.IController {
        validityCheck: Function = (args) => true; // <- doesn't work
        validate(value: Date): void {
            // some validations
            return this.validityCheck({ selection: value });
        }
    },
}

从没有定义validityCheck 属性的组件调用 validate() 时,它将返回未定义。关于如何使其工作的任何想法?

【问题讨论】:

  • 可能不是在控制器中覆盖validityCheck,而是可以在validate 方法中返回类似return !angular.isFunction(this.validityCheck) || this.validityCheck({ selection: value }); 的内容。使用&amp;? 使绑定成为可选。

标签: angularjs typescript angularjs-components


【解决方案1】:

正如术语binding 所暗示的,它必须从父组件传入。

<date-picker-input-component
  format="some string"
  mode="some other string"
  validity-check="someFunctionFromParentController">
</date-picker-input-component>

并从您的控制器中删除这部分

validityCheck: Function = (args) => { return true; }; // <- doesn't work

假设 someFunctionFromParentController 是在您的父控制器上定义的

【讨论】:

    【解决方案2】:

    尝试让您的绑定成为可选:

    bindings: {
        validityCheck: '&?'
    },
    

    【讨论】:

    • 谢谢,是第一部分还是第二部分为您解决了问题?
    • 第一部分搞定了,console.log 吐出ƒ (){return!0}。谢谢!
    • 酷。您是否也尝试过传入validityCheck 的值?如果这行得通,我会有点惊讶。
    • 是的,效果很好。这就是 datepicker 组件与其 rangepicker 父组件“对话”的方式。我猜是 React 风格的。
    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 2012-07-25
    • 2022-01-19
    • 1970-01-01
    • 2016-02-12
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多