【问题标题】:angularjs very simple yes/no boolean select directive not bindingangularjs 非常简单是/否布尔选择指令不绑定
【发布时间】:2016-02-10 14:19:04
【问题描述】:

我正在尝试编写必须是最简单的角度指令,该指令显示是/否选择列表并绑定到包含布尔值的模型。不幸的是,现有值从未被预先选择。我的指令是

  return {
        restrict: 'E',
        replace: true,
        template: '<select class="form-control"><option value="true">Yes</option><option value="false">No</option></select>',
        scope: {
              ngModel: '='
        }
  }

我将指令称为

<yesno ng-model="brand.is_anchor"></yesno>

选择选项显示和生成的 HTML 读取为

<select class="form-control ng-isolate-scope ng-valid" ng-model="brand.is_anchor">
    <option value="? boolean:false ?"></option>
    <option value="true">Yes</option>
    <option value="false">No</option>
</select>

绑定模型的初始值为“false”,但它始终显示一个空选项,并且根据生成的 HTML 中列出的第一个选项。

谁能给点建议?

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    您不能在 angularjs 中使用 &lt;option&gt; 标签。
    在选择元素上使用角度“ng-options”指令。

    <select ng-options="..."></select>
    

    查看 angular 文档: https://docs.angularjs.org/api/ng/directive/ngOptions

    你的问题会用这个来解决。

    【讨论】:

    • 是的,你的答案是写的,那么如果我们使用“ng-selected”,那会是什么问题。
    • 感谢您的反馈。我现在明白你只能比较字符串,除非你使用 ng-options(?) 但是,我只想绑定一个布尔值,而不是一个模型。在实现 ng-options 之后,我的有界值总是以 {id:4, label:"Yes"} 之类的形式结束。我理解正确吗?
    • 您可以使用“as”和“track by”关键字告诉 Angular 要从您的对象中使用哪个值。例如 ng-options="item.id as item.label for item in items track by item.id" 了解更多详细信息,请观看我链接的文档,有很多示例为此提供了解决方案:)
    • 您绝对可以将选项标签与角度一起使用,但不能在选择上指定 ng-option 时使用。
    【解决方案2】:

    看到我们必须使用&lt;select ng-options="..."&gt;&lt;/select&gt;

    根据 Angular js 文档或

    我们必须通过添加 Angular js 的 ng-selected 指令来应用解决方法,这样您的代码将是

    <select class="form-control ng-isolate-scope ng-valid" ng-   model="brand.is_anchor">
      <option value="? boolean:false ?"></option>
      <option value="true" ng-selected="brand.is_anchor == true">Yes</option>
      <option value="false" >No</option>
    </select>
    

    如果我们不想使用,我们必须应用这个额外的解决方法

    <select ng-options="..."></select>
    

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 2013-10-26
      • 2015-05-29
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 2019-12-20
      • 1970-01-01
      • 2015-12-25
      相关资源
      最近更新 更多