web-dev-qa-db-ja.com

angularjsでng-modelの初期値を空の文字列に設定するにはどうすればよいですか?

モデルの属性に初期値を設定できるようにしたい

<input type="text" ng-model="selectedModel.title" name="title" value="" >

上記のように、入力テキストフィールドを空の文字列で最初にインスタンス化するために、属性の値を空の文字列にしたいと思います。

ただし、現在ng-model="selectedModel.title"value=""をオーバーライドします。

どうすればこれを乗り越えられますか?

15
stcho

コントローラーに初期値を設定する

コントローラでこれを行う必要があります:

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

Ng-initの公式AngularJSドキュメントは、「ngRepeatの特別なプロパティをエイリアスするために」ng-initの使用は1つしかないことを示唆しています。あなたのケースでは、値を初期化するためにコントローラを使用する方がよいでしょう。

ng-init を使用できます:

<input type="text"
       name="brand"
       ng-model="selectedModel.title"
       ng-init="selectedModel.title=''">
</input>
17
Rudolf Olah