我收到错误消息时错误:试图在ES6中创建一个angularJS指令。试图双向数据绑定
Expression 'undefined' in attribute 'myVar' used with directive 'myDirective' is non-assignable
试图建立一个双向数据绑定时。我不明白为什么。
我试图做的是将我的指令中的复选框的值绑定到其他地方的控制器中的值。
我在ES6中使用angularJS 1.5.7。
下面是相关代码:
我的指令及其控制器
export default class myDirective {
constructor() {
this.template = require('./template.html);
this.restrict = 'E';
this.scope = {};
this.bindToController = {
districts: '<',
myVar: '='
};
this.controller = MyController;
this.controllerAs = 'ctrl';
}
}
class MyController {
constructor() {
this.simulateQuery = false;
this.selected = '';
this.searchText = '';
}
checkMyVar(){
if(this.myVar){
this.selected = null;
this.searchText = '';
}
}
querySearch(query){
var result = query;
? this.districts.filter(this.createFilterForQuery(query))
: this.districts;
return results;
}
createFilterForQuery(query){
var lowercaseQuery = angular.lowercase(query);
return function filterFn(district){
return (district.value.indexOf(lowercaseQuery) !== -1);
}
}
}
template.html
<div flex=30>
<md-checkbox class="blue" ng-model="ctrl.myVar" ng-change="ctrl.checkMyVar()">myVar</md-checkbox>
</div>
该指令的用法
<my-directive myVar="ctrl.myVar"></my-directive>
myVar的这里在这个构造函数中声明模板控制器:
this.myVar = false;
谢谢。这是正确的。 – mTv