【问题标题】:setting Angular select ng-init to first value in array将Angular select ng-init设置为数组中的第一个值
【发布时间】:2014-01-03 01:20:17
【问题描述】:

我有一个简单的选择元素,我试图强制存在一个值来提交表单,我尝试设置所需的属性以及使用 ng-init 来确保选择了一个值并且都失败了。

我正在使用ng-options 从具有 ref 属性的对象数组中创建值列表。然后我想使用ng-init 将显示的值设置为数组中的第一个 Object.ref。

<select name="refmarker" class="input-block-level form-width-adjust" ng-model="model.refmarker" ng-options="rm.ref for rm in refmarkers" ng-disabled="editable" ng-init="model.refmarker='refmarkers[0].ref'" required></select>

我尝试了以下没有任何运气

ng-init="model.refmarker='refmarkers[0]'"
ng-init="model.refmarker='refmarkers[0].ref'"
ng-init="model.refmarker='rm.ref'"

required 属性也不起作用?角度选择元素有问题还是我做错了什么?

【问题讨论】:

  • 你的控制器是什么样的?你能把代码贴出来吗

标签: javascript angularjs angularjs-ng-init


【解决方案1】:

required 只能在表单元素中使用。

你想要的是 ng-init="model.refmarker=refmarkers[0]"

<!doctype html>
<html lang="en" data-ng-app="app">
<head>
    <meta charset="utf-8">
    <title>Test</title>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.js"></script>
    <script type="text/javascript">

        angular.module('app',[])
                .controller('Main',function($scope)
                {
                    $scope.model = {};
                    $scope.refmarkers = [{ref:'abc'},{ref:'def'},{ref:'ghi'}];
                });
    </script>
</head>
<body ng-controller="Main">
{{'Angular'}}
<select ng-model="model.refmarker" ng-options="rm.ref for rm in refmarkers" ng-init="model.refmarker=refmarkers[0]"></select>
{{model.refmarker}}
</body>
</html>

【讨论】:

  • 这个答案确实有效,但是使用 ng-init 并不是一个很好的做法。模型初始化应该发生在控制器中。
  • 感谢 Noishe,您提供的示例确实有效,但由于某种原因在我的应用程序中不起作用?!!我认为唯一的区别是,在我的应用程序中,refmarkers 数组是动态创建的,因此它可能无法初始化为数组中的第一个值,因为直到表单中此 select 元素之前的步骤才创建它。我之前使用 ng-repeat 填充下拉列表,并且能够初始化为一个值,当我切换到 ng-options 时,我丢失了初始化值。
  • dtabuenc - 如何初始化模型以从控制器中选择一个值?
  • 只需将 ng-init 移动到主控制器的第一行即可。
  • 您说得对,原因是您稍后要填充列表。在执行 init 行时,model.refmarker == undefined,因此 select 被设置为 undefined,这不是一个有效的选项,请留出空白。
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
相关资源
最近更新 更多