了解组件中的绑定

Understand Bindings in Components

我没有在 angular components. I have reworked this material FAB demo 中得到组件的绑定。所以不再有 ng-controller 指令。但是我无法使 bindings: {isOpen: '='} 的绑定起作用。我收到以下错误:

Expression 'undefined' in attribute 'isOpen' used with directive 'tsButton' is non-assignable!

代码如下所示:

<div ng-cloak>
<md-fab-speed-dial
        md-open="$ctrl.isOpen"
        ng-mouseenter="$ctrl.isOpen=true"
        ng-mouseleave="$ctrl.isOpen=false">
    <!-- buttons and trigger -->
</md-fab-speed-dial>

(function () {
'use strict';

angular
    .module('trip')
    .component('tsButton', {
    templateUrl: "app/component/button.component.html",
    controller: ButtonController,
    });

    function ButtonController() {
        var vm = this;

        vm.isOpen = false;
    };
}
})();

如果我省略 bindings: {isOpen: '='},则不会传播 md-open="$ctrl.isOpen"

解决方法是为 ng-mouseenter="$ctrl.open()"ng-mouseleave="$ctrl.close()" 定义方法,在控制器中将正确的布尔值分配给 vm.isOpen。但正如我所说,这只是一种使代码变长的变通方法。

isOpen: '=' 没有工作,因为我给了它一个原始值。为此,它当然必须是 reference