特定の DOM 要素の可視性を変更するために AngularJs を使用しています。可視性は、ドロップダウンリストで選択された値によって異なります。より具体的には、選択したoption
タグのデータ属性について。既存の ASP.NET コントロールであるため、AngularJs を介してドロップダウンを設定することはできません。
コントローラーでメソッドを使用ng-change
して呼び出すことを考えましたが、引数を渡す必要があります。この引数は DOM にあり、コントローラーにはありません。明らかに、私はこの方法を維持し、コントローラーで DOM にアクセスしたくありません。
私はjsFiddleを作成しましたが、これは私のコードです:
HTML
<body ng-app>
<div ng-controller="VehicleDetailsCtrl">
<select ng-model="selectedValue" ng-change="update()">
<option value="1" data-carType="Car">Car 1</option>
<option value="2" data-carType="Car">Car 2</option>
<option value="3" data-carType="Truck">Truck</option>
</select>
<div ng-hide="isTruck">
Hide if a truck was selected.
</div>
</div>
</body>
Javascript
function VehicleDetailsCtrl($scope) {
$scope.isTruck = false;
$scope.selectedValue = null;
$scope.update = function() {
$scope.isTruck = !$scope.isTruck;
// hide div here?
// but then I'd need to know the selected option,
// but I don't want to reference the DOM here.
};
}
私はこれに間違った方法でアプローチしていますか?
ASP.NET は既にそれを行っているため、AngularJs にデータを入力させることはできないことに注意select
してください (現時点では変更できません)。
selectedValue
また、 (ポストバックしてデータベースに保存するため)とdata-carType
(DOMを変更するため)の両方が必要です。value
実行時にトラックの id (または ) が何であるかはわかりませんoption
。