0

次のような を使用して入力された 2 つの選択フォームがありますng-options

<select ng-options="item.id as product.category for product in products" ng-model="order.category" ng-change='find_brands(order.category)' ></select>
<select ng-options="brand.id as brand.name for brand in brands" ng-model="order.brand" ></select>
<button ng-click='Get_Products(order)>ORDER</button>

$http最初のドロップダウンが選択されると、次のように 2 番目のドロップダウンを設定するための呼び出しがトリガーされます。

$scope.find_brands = function(category){
  $http
    .get('Default.aspx/Find_Brands', {category: category})
    .success(data){$scope.products = data.d};
};

"brands"これにより、ドロップダウンに新しい値が正しく入力されます。しかし、ブランドを選びに行くとng-model変わらない。テストすると、null 値が返されます。私はサイクルで$scope.$apply作業することを検討しまし$digestたが、それは私の問題ではないようです ("brands"ドロップダウンは正常に更新されたデータを取得しますが、データを送信しません)。

何が起こっているのか、それを修正する方法を知っている人はいますか?

4

1 に答える 1

1

この簡単な例を作成してきました: http://jsbin.com/degece/edit?html,js,console,output

あなたのコードにはいくつかのエラーがあります。

この行では、product.id の代わりに item.id を使用します。

<select ng-options="item.id as product.category for product in products" ng-model="order.category" ng-change='find_brands(order.category)' ></select>

これには引用符のタイプミスがあります。Get_Products の前に引用符は必要ありません。

<button ng-click='Get_Products(order)>ORDER</button>

最後に、呼び出しの結果を $scope.brands変数に割り当てる必要があります。

.success(data){$scope.products = data.d};

私の例では、モデルの初期化などのベスト プラクティスの実装を確認できます。

于 2016-02-26T21:23:19.427 に答える