【问题标题】:Allow edit operation on manually entered text in ui-select允许对 ui-select 中手动输入的文本进行编辑操作
【发布时间】:2017-07-29 02:03:43
【问题描述】:

我正在使用 ui-select 库中的选择字段。我可以选择选项或输入一个新选项。当我输入一个新值并尝试通过再次单击该字段来编辑它时,手动输入的值就消失了。是否有任何可用的方法,以便我可以保留手动输入的值并同时对其进行编辑。我已经参考了以下 stackoverflow 问题来实现它。 Allow manually entered text in ui-select

HTML

<ui-select ng-model="superhero.selected">
  <ui-select-match placeholder="Select or search a superhero ...">{{$select.selected}}</ui-select-match>
  <ui-select-choices repeat="hero in getSuperheroes($select.search) | filter: $select.search">
    <div ng-bind="hero"></div>
  </ui-select-choices>
</ui-select>

控制器

$scope.getSuperheroes = function(search) {
 var newSupes = $scope.superheroes.slice();
  if (search && newSupes.indexOf(search) === -1) {
    newSupes.unshift(search);
  }
  return newSupes;
}

下面的链接https://codepen.io/arcotnaresh/pen/bVqqdj已经有一个工作的codepen解决方案了

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    (更新)

    根据官方documentation,您应该像这样将reset-search-input属性设置为false

    <ui-select ng-model="superhero.selected" reset-search-input="false">
        <!-- ... -->
    </ui-select>
    

    CodePen

    P.S: 请注意,当输入某个字符串并选择列表中的另一个元素(不是输入的元素)时,再次单击输入时将显示输入的字符串,而不是所选元素.

    【讨论】:

    • 问题是选择字段将保存较长字符的值。你能推荐一些其他支持这个功能的库吗?
    • 现在我想不起任何其他图书馆。在这种情况下,我建议您采取一种解决方法:在 on-select 选项上放置一个函数,您可以在其中临时保存(新类型的)选定值,然后当用户再次单击 ui-select 时,如果当前模型不是其中之一select-choices(表示是新的),立即将ui-select的文本设置为之前临时保存的值。最后一部分你必须自己弄清楚,因为我现在有点忙,但我稍后会尝试为你做一个 plnkr,以防你仍然被困在这里。
    • 你有机会修改这些东西吗? @lealceldeiro
    • @DurgaPrasad,请看我编辑的答案。根据 ui-select 文档,有一种方法可以按照我的描述进行。也许上次检查时我没有看到它,或者他们后来添加了这个。无论如何,这应该可以为您解决问题
    • 感谢您的回答。几天前我能够实现同样的目标。我什至能够保留之前可用的选定选项。 select.js 中有一个函数 ctrl.activate。如果 ctrl.selected 不是未定义的,只需将 ctrl.search 的值设置为 ctrl.selected 就可以了。
    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 2015-10-22
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2019-03-07
    相关资源
    最近更新 更多