了解组件中的绑定

时间:2016-02-26 11:20:57

标签: angularjs angularjs-bindings angularjs-components

我没有得到角度components的绑定。我已将此material FAB demo重新编写为组件。所以没有ng-controller指令了。但是,我不能使bindings: {isOpen: '='}的绑定起作用。我收到以下错误:

  

与指令'tsButton'一起使用的属性'isOpen'中的表达式'undefined'是不可赋值的!

代码如下所示:

<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。但正如我所说,这只是一种解决方法,使代码更长,等等。

1 个答案:

答案 0 :(得分:1)

isOpen: '='无效,因为我给它一个原始值。为了实现这一目标,当然必须是参考