私のチームは、角度材料のバージョンをv1.0.8からv1.1.0-rc.5にアップグレードしています。我々は<md-select>
を持っており、ng-required
とng-change
の機能を持っています。ng-changeとng-requiredで角度材料md-select問題
angular.module('MyApp',['ngMaterial', 'ngMessages'])
.controller('AppCtrl', function($scope) {
// if I uncomment this line change myChange function gets invoked the first time
//$scope.myModel = {};
$scope.values = [
{val:1, des: 'One'},
{val:2, des: 'Two'}
];
$scope.myChange = function(){
alert('Changed value');
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-route.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-messages.min.js"></script>
<script src="https://cdn.gitcdn.link/cdn/angular/bower-material/v1.1.0-rc.5/angular-material.js"></script>
<link rel="stylesheet" href="https://cdn.gitcdn.link/cdn/angular/bower-material/v1.1.0-rc.5/angular-material.css" />
<div ng-controller="AppCtrl" layout="column" layout-align="center center" ng-cloak="" ng-app="MyApp">
<form name="myForm">
<md-input-container class="md-block">
<label>Favorite Number</label>
<md-select name="myModel" ng-change="myChange()" ng-model="myModel" ng-required="true">
<md-option ng-value="myVal" ng-repeat="myVal in values">{{myVal.val}}</md-option>
</md-select>
</md-input-container>
myModel.des: {{myModel.des}}
</form>
</div>
このコードの動作を:あなたは、次のコードで見ることができるように、ユーザーが、新しい値を選択したときに、ライブラリの新しいバージョンにアップグレードした後、変更機能は実行されませんAngular Material v1.0.8でうまくいく。
からng-required
を削除すると、変更機能が実行されます。
をtrackBy
と追加することは、ドキュメントに示唆されているように役立ちません。
私たちは何が欠けていますか?
それが奇数である...私は、最新のリリースでCodePenを作成し、それがhttp://codepen.io/camden-kid/pen/Nrpwzz?editors=1010 –
正常に動作しますこんにちは@camden_kidコメントありがとうございます。私はあなたのコードを見ていますが、主な違いは、 'ng-value =" myVal "'を使っている間に ''の 'value =" {{state}} "'を使ったことです。さらに、 'ng-model =" userState "は文字列ですが、' ng-model = "myModel" 'はオブジェクトです。 'ng-value'を' value'に変更すると変更機能が起動しますが、HTMLの '{{myModel.des}}'には何も表示されません。私はまだ何かが欠けていると感じています。 – VincenzoC