【问题标题】:How to keep the selected value after selecting from options?从选项中选择后如何保留选定的值?
【发布时间】:2015-10-05 21:42:54
【问题描述】:

我是 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('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 从工厂接收名称列表,用户选择的名称存储在本地存储中,并且必须在选择框中保持选中状态,希望您能帮助我:)

如果我的英语一点都不好,请原谅,感谢您未来的回答,我希望通过在 stackoverflow 和任何地方搜索和研究,我能在其中找到我没有的东西..

-已编辑

我想补充一点,当我运行它以查看它是如何工作的时,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>

我的意思是,自动分配的值是object:xx,我想最好是每个名字的id,在工厂里分别是1,2,3,4,5...,与nameXX号码相同的ID..如果这也能解决,那就太好了:)

【问题讨论】:

    标签: javascript angularjs select angular-ngmodel ng-options


    【解决方案1】:

    当您设置 $scope.selected 时,您只是将它设置为“标题”,而不是实际选择的对象。

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

    您需要像这样将整个对象设置为 localStorage:

    localStorage.setItem('nomPobleConfig', objPobla);
    

    【讨论】:

      【解决方案2】:

      由于您使用的是ng-model='selected',因此您必须像这样初始化$scope.selected

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

      【讨论】:

      • 对不起,代码写错了,$scope.seleccio 真的是$scope.selected,那它不是已经初始化了吗? (当然我想在控制器中)
      • 已经这样做了,没有任何改变......每次我重新加载页面时,“No assignat”都会留在那里,虽然(当然)localstorage 存储了我选择的正确值.. 但对我来说很重要始终显示本地存储中的值 :) 感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2013-05-03
      • 1970-01-01
      相关资源
      最近更新 更多