私はangularjsプロジェクトに取り組んでおり、ngModel
がselect内でバインドされないという問題があります。しかし、同じ概念が別のselectタグと同じhtmlページで機能しています。以下はコードです。
_ <select ng-model="selectedFont"
ng-options="font.title for font in fonts"
ng-change="onFontChange()">
</select>
_
onFontChange()
関数はコントローラーに配置されます。
誰もが助けてくれることは非常にありがたいです...よろしくお願いします。
トニーポニーのフィドルに基づいて:
<div ng-app ng-controller="MyCtrl">
<select ng-model="opt"
ng-options="font.title for font in fonts"
ng-change="change(opt)">
</select>
<p>{{opt}}</p>
</div>
コントローラー付き:
function MyCtrl($scope) {
$scope.fonts = [
{title: "Arial" , text: 'Url for Arial' },
{title: "Helvetica" , text: 'Url for Helvetica' }
];
$scope.change= function(option){
alert(option.title);
}
}
まず、コントローラーでデータ(ローカルまたはサーバーから)を作成します。そして、デフォルト値を初期化します。これにより、HTMLフォームで選択されたデフォルトアイテムが強制されます。
// supported languages
$scope.languages = ['ENGLISH', 'SPANISH', 'RUSSIAN', 'HINDI', 'NEPALI'];
// init default language
$scope.language = 'ENGLISH';
今あなたのHTMLフォームで
<select class="form-control" ng-model="language">
<option ng-repeat="language in languages">{{language}}</option>
</select>
変更が機能しているかどうか、コントローラーでテストを実行できます
$scope.$watch('language', function (newVal, oldVal) {
console.log(oldVal + " -> " + newVal);
});
英語->ロシア語
ロシア語->スペイン語
スペイン語->ロシア語
これがお役に立てば幸いです。ありがとう!