我没有得到角度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
。但正如我所说,这只是一种解决方法,使代码更长,等等。
答案 0 :(得分:1)
isOpen: '='
无效,因为我给它一个原始值。为了实现这一目标,当然必须是参考。