1

Angular Bootstrap UI typeaheadを使用しており、 typeahead 内のモデル値を更新しようとしています。ただし、特に適用しない限り、更新されたモデル値には変更が反映されません。

<input ng-model="query" typeahead="option for option in getOptions($viewValue)">

app.controller('MainCtrl', function($scope) {
  $scope.query = '';
  $scope.getOptions = function(query){
    if(query == "foo"){
      $scope.query = "foobar";
      // uncommenting the next line works but also raises error
      // $scope.$apply()
      return []
    }
    return ["I have an idea", "I have new idea"];
  }
});

プランカーコード: http://plnkr.co/edit/pNxBMgeKYulLuk7DO0gB?p=preview

4

1 に答える 1

1

の値を監視することで、これを実現できます$scope.query

$watch、はそれぞれ変更後の値と変更前の値を表しnewValueます。oldValue$scope.query

$scope.$watch("query", function(newValue, oldValue){
  if (newValue !== oldValue) {
    if (newValue === "foo") {
      $scope.query = "foobar";
    }
  }
});

http://plnkr.co/edit/Fsj8KWuSzr9VTMkKB9wO?p=preview

于 2013-09-20T20:34:31.103 に答える