ドロップダウンのカスタムディレクティブを作成しました。そのドロップダウンでng-changeイベントが発生したときにUI要素を表示/非表示にしたい。コンポーネントからのDOM操作Angle 1.5 +
これは私のコードへのplunkrのリンクです。
'onCarChange()'メソッドが呼び出されていますが、選択に基づいてUI要素が非表示または表示されていません。
私はまだAngularJSを勉強していますので、間違ったアプローチをとっている場合は、親切に教えてください。
HTMLマークアップ
<div ng-app="RedBlack">
<select-car></select-car> <-- element directive
<p ng-show="vm.showDataGrid">DATA GRID</p>
<button ng-show="!vm.disableRunButton">Run Button</button>
</div>
AngularJSコード
angular
.module('RedBlack', [])
.component('selectCar', {
restrict: 'E',
templateUrl: 'select-car.html',
bindings: {
},
transclude: true,
controller: CarsController,
controllerAs: 'vm',
replace: true
})
.controller("CarsController", CarsController);
function CarsController() {
var vm = this;
vm.showDataGrid = true;
vm.disableRunButton = true;
vm.myCars = {
options: [
{ id: '1', name: 'LaFerrari' },
{ id: '2', name: 'Porsche 918' },
{ id: '3', name: 'McLaren P1' }
],
selectedCar: { id: '2', name: 'Porsche 918' }
};
vm.onCarChange = onCarChange;
function onCarChange() {
console.log("Called onCarChange()");
vm.showDataGrid = false;
vm.disableRunButton = false;
return true;
}
}
選択-car.html
<div>
<select class="form-control" ng-options="option.name for option in vm.myCars.options track by option.id"
ng-model="vm.myCars.selectedCar"
ng-change="vm.onCarChange()">
</select>
</div
あなたはコンポーネント、角張っている1.5+使っているならなければなりません。だからあなたは$ 1スコープをページコントローラと共有するべきです(あなたが持っていると仮定して)。そうでない場合は、空のページコントローラを作成して、showDataGridを取得するメソッドを作成します。 – rrd
@rrd他のメソッドがあるので、コントローラとしてCarsControllerを使いたいです。空のページコントローラが何を意味するのか分かりません。あなたは私のplunkrを変更して元に戻すことができますか? – overlord