0

angularjs の select ディレクティブに問題があります。

これが私のコードです:

<ul class="thumbnails">
    <li class="span4" ng-repeat="product in productsDTO">
        <div class="thumbnail">

        ...
        ...
        ...


        <div class="span4" ng-repeat="varCat in product.varietyCategoriesAndOptions">
            {{varCat.varietyCategoryName}}
            <br />

            <br /><br />

            <select ng-model="varCat.varietyCategoryOption" ng-options="varietyCategoryOptionTransfer.varietyCategoryOptionId as varietyCategoryOptionTransfer.varietyCategoryOptionValue for varietyCategoryOptionTransfer in varCat.varietyCategoryOptions">
                <option value="">Select color</option>
            </select>

        </div>

        ...
        ...
        </div>
    </li>
</ul>

ローカル スコープに追加される json を返す $http 呼び出しがあります。

function getProductsByCategoryIdServiceCall(CategoryService, categoryId){
          CategoryService.getProductsByCategoryId(categoryId).success(function(data){
              $scope.productsDTO = data;
          }).error(function(data){
                  $scope.productsDTO = null;
          });
      }

したがって、基本的には、webservice 呼び出しから返された一連の json オブジェクトがあり、それらの json オブジェクトを持つようにローカルの $scope を設定し、productsDTO の最初の反復タグが新しく設定されたオブジェクトを反復処理します。

各製品には、この製品が持つ特別なカテゴリと、それらのカテゴリのオプションを示す個別のオブジェクトがあります。select タグを varCat オブジェクトにバインド (ng-model) しようとしています。これは現在繰り返し処理されているオブジェクトであり、select タグ ディレクティブに設定しようとしているカテゴリのオプションの配列も含まれている同じオブジェクトです。特定の選択カテゴリの現在の状態を保持するために、variablecategoryoption という名前の特別なフィールドを、variablecategory オブジェクトに追加しました。ページごとにこれらのカテゴリ選択が多数存在する可能性があり、その数が不明なため、ページにハードコードすることはできないため、このようにしています。

機能していないようです。誰かアドバイスはありますか?

すべての json は大量のデータですが、選択ボックスに関連付けられたすべての値を持つ製品内の json 戻り値の一部を次に示します。

"varietyCategoriesAndOptions":{"1":{"varietyCategoryId":111,"varietyCategoryName":"color","varietyCategoryOptions":{"202":{"varietyCategoryOptionId":202,"varietyCategoryOptionValue":"red"},"203":{"varietyCategoryOptionId":203,"varietyCategoryOptionValue":"blue"}},"varietyCategoryOption":null}}

**更新* ** * ** * ** * ** * ** * *** ユーザー Chanderari は、オブジェクト形式のデータを配列形式のように扱っていると述べました。Chanderari はこの形式を使用すると言われています

(key, value) in product.varietyCategoriesAndOptions

私は私の選択でこれを試しました

<select ng-model="varCat.varietyCategoryOption" ng-options="(varietyCategoryOptionTransfer.varietyCategoryOptionId, varietyCategoryOptionTransfer.varietyCategoryOptionValue) in varCat.varietyCategoryOptions">
       <option value="">Select color</option>
  </select>

そして、このエラーが発生しました:

 Error: [ngOptions:iexp] Expected expression in form of '_select_ (as _label_)? 
 for (_key_,)?_value_ in _collection_' but got 
 'varietyCategoryOptionTransfer.varietyCategoryOptionId, 
 varietyCategoryOptionTransfer.varietyCategoryOptionValue in 
 varCat.varietyCategoryOptions'.
4

2 に答える 2

1

選択タグのこの変更は、私にとっては十分でした。

      <select ng-model="varCat.varietyCategoryOption" ng-options="value.varietyCategoryOptionId as value.varietyCategoryOptionValue for (key,value) in varCat.varietyCategoryOptions">
            <option value="">Select color</option>
     </select>

オブジェクト グラフにアクセスするための select ディレクティブの書式設定が間違っていました。選択ボックスにデータが取り込まれます。大変お待たせいたしました。

于 2013-12-05T04:04:49.900 に答える