1

具体的には、いくつかの日付範囲で AJAX を SELECT のペア (AngularJS ng-repeat で維持) に変換し、それを jQuery UI の selectToUISlider を使用してスライダーに変えています。selectToUISlider が動作している SELECT が実行中に変更された場合、selectToUISlider の動作は定義されていないと思います。AngularJS の更新が完了した後にのみ呼び出されるようにする方法はありますか? まだ問題に遭遇したことはありませんが、運が良かったのか、適切なタイミングでコンピューターの遅延が発生しなかったのかはわかりません...

私は2つの解決策を考えることができますが、どちらもあまり良くないようです:

  • ng-repeater を使用しないでください。jQuery を使用して SELECT を作成します。しかし、それをしなければならないのは悲しいことです。
  • setTimeout を使用して selectToUISlider の呼び出しを遅らせます。しかし、それは... エレガントではないようです。
4

1 に答える 1

1

selectToUISlider がどのように機能するかはわかりませんが、ディレクティブが必要です。そのディレクティブでは、リストへの変更を $watch し、スライダーを更新しますが、それが行われるはずです。

http://docs.angularjs.org/api/ng.$ro​​otScope.Scope#$watch

HTML の例:

<select jq-slider="myList" ng-options="item.val for item in myList"></select>

JS の例:

myApp.directive('jqSlider', function() {
  return {
    link: function(scope, elm, attrs) {
      scope.$watch(attrs.jqSlider, function whenMyListChanges(newValue, oldValue) {
        $(elm).applySelectUISliderUpdateForNewValues();
      });
    }
  };
});
于 2012-07-31T02:56:57.750 に答える