1
AngularJSを使用して子コンポーネントから親コンポーネントにイベントを伝播しようとしています。
parent.component.js
import angular from 'angular';
import childComponent from './child/child.component'
let parent = {
template: require('./parent.view.html'),
controller: 'parentController',
controllerAs: 'parentCtrl',
};
class parentController {
constructor() {
this.myvalue = 'default';
}
$doCheck(event) {
console.log('new myvalue:' + this.myvalue);
}
}
const parentComponent = 'parent';
angular.module(parentComponent, [childComponent])
.component('parent', parent)
.controller('parentController', parentController);
export default parentComponent;
parent.view.html
<child changevalue="parentCtrl.myvalue = $event.myvalue"></child>
<p>myvalue: {{parentCtrl.myvalue}}</p>
child.component.js:
私が示すように、親コンポーネントを有します
ボタンのクリック時にimport angular from 'angular';
let child = {
template: require('./child.view.html'),
controller: 'childController',
controllerAs: 'childCtrl',
bindings:{
changevalue: '&'
}
};
class childController {
constructor() {
}
triggerEvent() {
this.changevalue({$event: {myvalue: 'child1'}});
}
}
const childComponent = 'childComponent';
angular.module(childComponent, [])
.component('child', child)
.controller('childController', childController);
export default childComponent;
child.view.html
<button ng-click="childCtrl.triggerEvent()">Select</button>
子ビューで、私は正常に親図に示すように、親にmyvalue
を変更することができますよ。
ただし、この変更は$onChange()
メソッドをparent.component.js
にトリガーしません。
さらに、この変更により、 が2回にトリガされます。
ボタンをクリックしてメソッド呼び出しを1回だけトリガーする必要があります。
私は間違っていますか?どんな指導も真剣に歓迎されます。ありがとう