【问题标题】:Angularjs ng-value for boolean in select not working选择中布尔值的Angularjs ng-value不起作用
【发布时间】:2016-09-04 05:26:34
【问题描述】:

我想使用ng-value="true"false(布尔值)作为选择选项。但我想在 php 中填写选项,因为我使用的是 laravel 和翻译器。这是我的代码,发送表单后该值不是布尔值。

 <select
      id="job-payed"
      required
      class="form-control"
      name="payed"
      ng-model="payed">
  <option selected disabled value>Please choose..</option>
  <option ng-value="true">Payed</option>
  <option ng-value="false">Not payed</option>
 </select>

【问题讨论】:

  • 我知道我可以使用 js 数组,并使用 ng-options。但我想用 php 填充它。 ng-options="opt as opt.label for opt in options"
  • 这将是一个字符串到你的控制器。您的控制器需要将其转换为布尔值。
  • 您可以使用“value”而不是“ng-value”。然后在你的逻辑中使用字符串 'payed'/'notpayed'。
  • 嗯,是的,你是对的。还有没有其他方法可以解决这个问题?

标签: javascript php angularjs laravel


【解决方案1】:

如果有人仍然遇到这个问题,试试这个:

<select id="job-payed" required class="form-control" name="payed" ng-model="payed">
    <option selected disabled value>Please choose..</option>
    <option ng-value="{{ true }}">Payed</option>
    <option ng-value="{{ false }}">Not payed</option>
</select>

【讨论】:

    【解决方案2】:

    尝试使用 ng-value="'true'" 因为 ngValue 应该包含对值的表达式

    如果你使用 ng-value="true" angular 会在你的作用域中寻找名为 true 的变量($scope.true)

    https://docs.angularjs.org/api/ng/directive/ngValue

    【讨论】:

      【解决方案3】:

      这适用于 选择框,正如预期的那样从 Angular 1.6.0 开始。之前版本的 ng-value 将值视为选择框中的字符串。

      Angular 1.5.0:https://plnkr.co/edit/G52M9yaAgJjfVj82i3YF?p=preview

      Angular 1.6.0:https://plnkr.co/edit/nyI4ENLW1h0z3JuyDYWO?p=preview

      更新 plunk 中的版本以查看类型如何变化:

      <script src="//code.angularjs.org/1.5.0/angular.min.js"></script>
      

      【讨论】:

        猜你喜欢
        • 2018-08-27
        • 1970-01-01
        • 2013-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-20
        • 1970-01-01
        相关资源
        最近更新 更多