2015-07-16 1 views
0

Я довольно новичок в программировании на AngularJS, всего несколько недель с ним, и я хотел бы понять, почему в поле выбора, которое я использую, при перезагрузке страницы или переключении между страницами и возврате на нее выбранная опция не оставаться в качестве основного варианта, который должен быть показан, а вариант <option value="" selected>No assignat</option> - это тот, который всегда остается там?Как сохранить выбранное значение после выбора из параметров?

<select ng-model="selected" ng-options="poblacio.title for poblacio in poblacions" ng-change="canviarPoblacio(selected)"> 
     <option value="" selected>No assignat</option> 
</select> 

-CONTROLLER

.controller('ConfigCtrl', function($scope, noms, fPoblacions){ 
    $scope.poblacions = fPoblacions.getPoblacionsConfig(); 
    $scope.selected = localStorage.getItem('nomPobleConfig'); 
    $scope.canviarPoblacio = function(objPobla){ 
    localStorage.setItem('nomPobleConfig', objPobla.title); 
    localStorage.setItem('idPobleConfig', objPobla.id); 
    window.location.reload(); 
    } 
}) 

$ scope.poblacions получает список имен с завода и имя, которое пользователь выбирает это на хранить эту LocalStorage и должны остаться выбраны в окне Выбор , Я надеюсь, что вы можете мне помочь :)

Извините, если мой английский не очень хорош, спасибо за ваши будущие ответы, и я надеюсь, что найду в них то, что у меня нет, поиск и исследование здесь в stackoverflow и везде ..

-EDITED

Я хотел бы добавить, что, когда я запускаю его, чтобы увидеть, как это работает, это то, что появляется в консоли Chrome:

<select class="selectBox ng-pristine ng-untouched ng-valid" ng-model="selected" ng-options="poblacio.title for poblacio in poblacions" ng-change="canviarPoblacio(selected)"> 
    <option value="" selected="selected">No assignat</option> 
    <option value="object:9" label="name1">name1</option> 
    <option value="object:10" label="name2">name2</option> 
    <option value="object:11" label="name3">name3</option> 
    <option value="object:12" label="name4">name4</option> 
    <option value="object:13" label="name5">name5</option> 
    <option value="object:14" label="name6">name6</option> 
    <option value="object:15" label="name7">name7</option> 
    <option value="object:16" label="name8">name8</option> 
    <option value="object:17" label="name9">name9</option> 
    <option value="object:18" label="name10">name10</option> 
    <option value="object:19" label="name11">name11</option> 
    <option value="object:20" label="name11">name11</option> 
    <option value="object:21" label="name12">nam12</option> 
    <option value="object:22" label="name13">name13</option> 
    <option value="object:23" label="name14">name14</option> 
    <option value="object:24" label="name15">name15</option> 
</select> 

Я имею в виду, что значения, присвоенные автоматически являются объектом : xx, и я полагаю, что было бы лучше быть идентификатором каждого имени, которое на заводе составляет 1,2,3,4,5 ... соответственно, тот же идентификатор, что и имяXX-номер .., если это может быть также было бы хорошо :)

ответ

1

Поскольку вы используете ng-model='selected' Вы должны инициализировать $scope.selected:

$scope.selected = localStorage.getItem('nomPobleConfig'); 
+0

жаль, что это было неправильно в коде, $ scope.seleccio действительно был $ scope.selected, так, ISN» t он уже инициализирован? (в контроллере, конечно, я полагаю) – edusola93

+0

уже сделал это, и ничего не изменилось ... «No assignat» остается там каждый раз, когда я перезагружаю страницу, хотя (конечно) localstorage хранит правильное значение, которое я выбираю .. но это важно для меня всегда показывать ценность, которая находится в localstorage :) Спасибо за вашу помощь! – edusola93

0

Когда вы устанавливаете $ scope.selected, вы устанавливаете его только для «title», а не для выбранного объекта.

localStorage.setItem ('nomPobleConfig', objPobla.title);

Вам необходимо установить полный объект в LocalStorage так:

localStorage.setItem('nomPobleConfig', objPobla);