2017-01-22 5 views
0

В моем раскрывающемся списке по умолчанию используется значение «Нет предпочтений», которое я хочу, но оно остается перезаписанным другими параметрами при загрузке на страницу. Как сохранить значение «Нет предпочтений» в качестве значения по умолчанию.Угловая опция выбора по умолчанию, которая перезаписывается

контакт-form.html:

<p> 
    <label>Preference</label> 
    <select id="name" class="form-control" ng-init="" ng-model="contact.teammate" ng-options='contact.id as (contact.firstName + " " + contact.lastName) for contact in contacts'> 
     <option value="">No Preference</option> 
    </select> 
</p> 

app.js:

var app = angular.module("contactsApp", ['ngRoute']) 
    .config(function($routeProvider) { 
     $routeProvider 
      .when("/new/contact", { 
       controller: "NewContactController", 
       templateUrl: "contact-form.html", 
        resolve: { 
        contacts: function(Contacts) { 
         return Contacts.getContacts();     
        } 
        } 

      }) 
      .otherwise({ 
       redirectTo: "/" 
      }) 
    }) 
    .service("Contacts", function($http) { 
     this.getContacts = function() { 
      return $http.get("/contacts"). 
       then(function(response) { 
        return response; 
       }, function(response) { 
        alert("Error finding contacts."); 
       }); 
     } 
    }) 
    .controller("NewContactController", function($scope, $location, Contacts) { 
     console.log("Entered new contacts controller"); 
    Contacts.getContacts().then(function(doc) { 
      $scope.contacts = doc.data; 
     }, function(response) { 
      alert(response); 
     }); 
    }); 

ответ

1

Добавить

$scope.contact.teammate = ''; 

только в:

$scope.contacts = doc.data; 

Это будет по умолчанию для параметра без значения '' или если вы хотите по умолчанию что-то еще, просто установите для него значение.

Кроме того, необходимо определить:

$scope.contact = {}; 

Делайте это только в:

console.log("Entered new contacts controller"); 

Вот пример Plunker: https://plnkr.co/edit/4hCSXURbc754IAHU3VyN?p=preview

Я использовал тайм-аут, чтобы имитировать АЯКС задержку.

+0

Я добавил $ scope.contact = ''; $ scope.contact.teammate = ''; но «Без предпочтений» по-прежнему меняются на одно из имен при загрузке. – yellavon

+0

Это потому, что $ scope.contact не определен, поэтому contact.teamate пытается установить значение для teammate team undefined, и это не сработает. Я обновил свой ответ :) –

+0

Добро пожаловать. Рад, что я могу помочь и приветствую Javascript :) –

Смежные вопросы