モデルの属性に初期値を設定できるようにしたい
<input type="text" ng-model="selectedModel.title" name="title" value="" >
上記のように、入力テキストフィールドを空の文字列で最初にインスタンス化するために、属性の値を空の文字列にしたいと思います。
ただし、現在ng-model="selectedModel.title"
はvalue=""
をオーバーライドします。
どうすればこれを乗り越えられますか?
コントローラでこれを行う必要があります:
angular.module('MyModule').controller(
'myController',
function ($scope, MyService) {
$scope.selectedModel = { title: '' };
}
// if you're using a service
MyService.getModel().then(function (model) {
$scope.selectedModel = model;
// selected model doesn't have a title set, so give it a blank string as default
if (angular.isUndefined($scope.selectedModel)) {
$scope.selectedModel.title = '';
}
});
);
コントローラーで$ scopeの初期状態を設定する方法の詳細については、こちらをご覧ください 。
Ng-initの公式AngularJSドキュメントは、「ngRepeatの特別なプロパティをエイリアスするために」ng-initの使用は1つしかないことを示唆しています。あなたのケースでは、値を初期化するためにコントローラを使用する方がよいでしょう。
ng-init を使用できます:
<input type="text"
name="brand"
ng-model="selectedModel.title"
ng-init="selectedModel.title=''">
</input>