2017-10-22 9 views
0

私はDropDownListを持っています。ユーザーはオプションを選択してデータベースに保存する必要があります。私はAngularJsと、次を使用しています:HTML DropDownListから選択したオプション値を取得します

<select> 
    <option>----Please Select Sub-Category----</option> 
    <option ng-repeat="m in Categories" value="{{ m.CategoryId }}" ng-model="saveProducts.CategoryId">{{ m.Category }}</option> 
</select> 

私は上記DropDownListの値を示しますが、選択から値を取得し、スコープにそれを渡すために立ち往生することができます。私はこれも、愚かなものを試した:

<select> 
    <option>----Please Select Sub-Category----</option> 
    <option ng-repeat="m in Categories" value="{{ m.CategoryId }}" ng-model="m.CategoryId">{{ m.Category }}</option> 
</select> 

しかし、それは動作しません。 saveProductsは値を渡しているオブジェクト(スコープ)ですが、上記の手順でオプション値を渡すことができる簡単な方法はありますか?

私は、データベース内のデータを保存するためにやっているものをここで

、それがオプション値を除いて正常に動作し、上記で値を取得することができないのです。

productApp.controller('addProductController', function ($scope, $http) { 
    $scope.addData = function() { 

     $http({ 
      method: 'POST', 
      url: '/Product/AddProductsToDb', 
      data: $scope.saveProducts 
     }).success(function() { 
      $scope.saveProducts = null; 

     }).error(function() { 
      alert('Failed'); 
     }); 
    } 
}); 

これは私が持っているだけで合格する出力でありますそれからオプション値:

Sample_Image
アップデート1 - これは私が試したものですが、私は次のように使用して、アラートの方法で値を表示することができます:

<select ng-model="saveProducts.ParentId" 
     ng-options="m.Category for m in Categories track by m.CategoryId"> 
     <option value="">----Please Select Sub-Category----</option> 
</select> 

AngularJsコントローラー

productApp.controller('addProductController', function ($scope, $http) { 
$scope.addData = function() { 
     angular.forEach($scope.saveProducts, function (model, index) { 
      $scope.saveProducts.ParentId = (model.CategoryId); 
     }); 

     alert($scope.saveProducts.ParentId); 

     $http({ 
      method: 'POST', 
      url: '/Product/AddProductsToDb', 
      data: $scope.saveProducts 
     }).success(function() { 
      $scope.saveProducts = null; 

     }).error(function() { 
      alert('Failed'); 
     }); 
    } 
}); 

:それはのTextBox入力値が保存されますが、のDropDownListで立ち往生。選択したオプション値を取得してデータベースに保存できません。

+0

ここで、ng-repeatに使用する 'Categories'配列はどこにありますか? – Shyju

+0

もう一度この** - alert($ scope.saveProducts.ParentId)**を試してみると、** [Object Object] ** @Shyjuを返します。 –

答えて

1

選択したオプションを保存するプロパティが必要です。 ng-optionsを使用してドロップダウンをレンダリングできます。

<select ng-model="selectedCategory" 
     ng-options="option.Category for option in Categories track by option.CategoryId "> 
    <option value="">Select Option</option> 
</select> 

ここで、選択要素のngモデルはselectedCategoryに設定されています。だからあなたのメソッドを追加するにアクセスすることができますし、保存するために使用します。

$scope.addData = function() { 
    console.log($scope.selectedCategory); 
    //to do : use selectedCategory 
} 
+0

OK @名義。私はそれを試みます。私はすでに 'saveProducts'という名前のスコープをデータベースに渡しています。これを' SaveProducts'でどのように渡したり統合したりできますか? –

+0

「saveProducts」とは何ですか? – Shyju

+0

コード@Shyjuを試しましたが、値を取得せず、データベースにnullを保存します。これは私がやったことです - ** **。それから、私はループでそれを反復しました - ** angular.forEach($ scope.saveProducts、function(model、index){$ scope.saveProducts.SubCategory =(model.CategoryId);}); **。私は値を取得することができますが、再びそれはデータベースにnull値を保存します。私の更新された記事を見てください。 –

1

ngOptionsを使用します。その後、角に...

$scope.selected = $scope.Categories[0]; 

読むthe ngOptions documentationがニーズに応じて微調整する

<select ng-options="m as m.yourProperty for m in Categories" ng-model="selected"></select> 

:あなたのCategoriesデータの構造に応じて、あなたのような何かを行うことができます。

+0

私はそれをジョージ・ヴァレの作品にしました。どうもありがとう。 –

関連する問題