0

あるページの ng-option ドロップダウンから現在選択されているオプションを渡し、別のページの ng-option ドロップダウンのデフォルトの選択にする必要があります。

選択したオプションを $cookieStore に保存して、次のページに渡すことができます。しかし、新しいページのドロップダウンで事前に選択されたデフォルト オプションにすることはできません。

コントローラ 1 には、次のものがあります。

$scope.selectType = [
{ name: 'a' },
{ name: 'b' },
{ name: 'c' },
{ name: 'd' } ] 
$scope.preSelectTypes = $scope.selectType[0]

これにより、最初のドロップダウンが設定され、「a」がデフォルトのオプションになります。

選択したオプションを $cookieStore に保存する以下のコードもあります。

$cookieStore.put('abe', $scope.preSelectTypes)

コントローラ 2 には、$cookieStore 値を取得する以下のコードがあります。

$scope.selectType = $cookieStore.get('abe')

$scope.selectType.name は、以前に選択されたオプション名を返します。しかし、それを新しいドロップダウンに一致させ、ドロップダウンのデフォルトの選択にする方法がわかりません。

そして ng-option では、Angular が各オプションに割り当てた値をプルして別のコントローラーで使用することはできないようです。

4

2 に答える 2

0

2 ページ目の select 要素で ng-model を使用している可能性があります。その場合は、次のコードを使用できます。

$scope.ngModelProperty = $scope.selectType

ng-model 変数と selectType 変数を異なるスコープにする必要がある場合は、もう少し複雑になりますが、$scope サービスで簡単に管理できます。とにかく ng-model が定義済みの値を指すようにしたいのが一般的です。そうしないと、選択がドロップダウンの醜い空のオプションから始まります。

于 2015-03-18T02:20:13.623 に答える
0

select の入力に使用されるファクトリを用意することをお勧めします。次に、ウォッチを使用して選択の値を監視し、値が変更されたらファクトリを更新します。次に、selectFactory 値を使用して、2 番目のビューのコントローラーに値を設定します。

angular.module('myapp', []).controller('myController', function($scope, selectFactory) {
  $scope.selectModel = selectFactory.selectValue;

  $scope.$watch($scope.selectModel, function() {
    selectFactory.selectValue = $scope.selectModel;
  });
});

angular.module('myapp').controller('mySecondController', function($scope, selectFactory) {
  $scope.selectModel = selectFactory.selectModel;
});

angular.module('myapp').factory('selectFactory', function() {
return {
  selectValue: null
};
});
于 2015-03-18T02:16:28.643 に答える