32001


開発環境は  
Angular1.5  
AngularBootstrap  
TypeScript  
です。

AngularbootstrapのDatepickerPopupをディレクティブでラップしています。  
カスタムディレクティブで展開したHTMLから、  
ng-clickで隔離スコープのbooleanを切り替えるだけのスコープ内関数を呼び出します。

[code]

    this.scope = {};
    this.templateUrl = "<div ng-include='uri'></div>";
    this.link = (scope: IExtendedScope) => {
        scope.toggle = () => {
            scope.show = !scope.show;
        };
        scope.show = false;
    }
    
[/code]

hoge.html

[code]

    is-open="show" datepicker-open="show" ng-click="toggle()"
    
[/code]

隔離スコープのbooleanで表示、非表示を切り替えますが、AngularBootstrapのDatepickerPopupの機能で、ポップアップの外をクリックしても非表示になります。

このとき、隔離スコープのパラメータはfalse(ポップアップ非表示)になりますが、それ以降クリックすると、  
パラメータ"show"は切り替わりますがポップアップは非表示のままとなります。

ただ、

[code]

     ng-click="show=!show"
    
[/code]

とすることで、表示、非表示が行えるようになります。

上記事象について、詳しくわかる方がいたら何が起きているのか教えてください。


CC BY-SA 3.0
2017-01-19T09:10:36.210
31980
2017-01-23T13:13:07.987
2017-01-23T13:13:07.987
8396
8396
question
angularjs bootstrap typescript
隔離スコープのパラメータが同期されない


詳細がわからないため推測になりますが、以下のどちらかではないでしょうか。

  1. 異なるスコープでshowが定義されており、scope.toggleによる切り替えで期待したスコープのshowの値が変更されていない
  2. DatepickerのshortcutPropagationの設定が考慮されていない

補足：  
1.については作成されているカスタムディレクティブなどの詳細情報を追記されると原因がわかるかもしれません。  
2.はBootstrapの[Datapickerのページ](https://angular-
ui.github.io/bootstrap/#/datepicker)を参照してください。  
クリックイベントが伝播されて表示/非表示の処理が連続して実行されている可能性があります。


CC BY-SA 3.0
2017-01-20T02:07:48.660
32001
2017-01-20T07:44:45.743
2017-01-20T07:44:45.743
20272
20272
31980
answer