角度1.5とマテリアルデザインでは、「キャンセル」ボタン付きのfoobarを作成するためのパネルを表すコンポーネントを作成しました。明らかにパネルはダイアログ内にあるかどうかわからないので、「キャンセル」ボタンは単にコールバックを呼び出すだけです。具体的には、「キャンセル」ボタンを次にoncancel()
コールバックを起動しようとするコントローラのcancel()
方法、呼び出し:囲み成分でコンポーネント内のコンポーネントまたはmdDialogからバインドされたイベントを受け取る
angular.module("NewFooBarPanel", [])
.component("newFoobarPanel", {
templateUrl: "newfoobar-template.html",
bindings: {
onCancel: "&"
},
controller: function() {
var controller = this;
controller.cancel = function() {
controller.clearForm();
controller.onCancel({});
}
をFABがクリックされたとき、私はmdDialogを持ち出します。ダイアログがnewFoobarPanelが含まれています。私は、キャンセルボタンをクリックすると
angular.module("FoobarList", ["NewFooBarPanel"])
.component("foobarList", {
templateUrl: "foobarlist-template.html",
controller: function($mdDialog) {
this.addFoobar = function(ev) {
$mdDialog.show({
template: "<md-dialog aria-label='Add Foobar'><new-foobar-panel on-cancel='alert(\"need to cancel\")'></new-foobar-panel></md-dialog>",
targetEvent: ev,
clickOutsideToClose: true,
fullscreen: true
});
、フォームはので、私はnewFoobarPanelコントローラのcancel()
メソッドが呼び出されていることを知ってクリアされます。しかし、私は警告ダイアログが表示されないので、なんらかの理由でのon-cancel
コールバックが呼び出されていないようです。
これは、コンポーネント内のダイアログ内のコンポーネントを使用すると、(これは単純で直接的な使用例でも)複雑なものです。私はコールバックの呼び出しに問題を絞り込んだようです。どこで私は間違えましたか?
だから私は絵の中からmdDialogを取り除くことにしました。
<new-foobar-panel on-cancel='alert("need to cancel")'></new-foobar-panel>
は今、これはただのコンポーネント内のコンポーネントで、まだ私はまだ警告ダイアログが表示されません。今、私は単にfoobarListコンポーネントに直接newFoobarPanelを埋め込みます。コールバックが呼び出されないのはなぜですか?