javascript - 在加载 Angularjs 时从 Controller 初始化所有 ng-model

标签 javascript angularjs json angularjs-scope angular-ngmodel

我陷入了一个问题,我应该获得所有声明为 ng-model="a['keyX']ng-models 和在用户开始输入之前将它们初始化0

由于某些原因我无法使用ng-value

我尝试将 $scope.a 放入我的 initializeToZero() 函数中。它返回一个空的 json 对象。

我什至尝试使用$scope.$apply()但我运气不好。

我得到的只是一个空的 json 对象。

有什么方法可以在 Controller 中将它们全部初始化,而不管输入和按键的数量如何?

键的名称会有所不同...我只是在这里提供通用键名称...所以请确保您没有对其进行硬编码。

我在代码片段中提到了ng-controller,但我使用的是ui.router

angular.module('myApp', [])
  .controller('myCtrl', function($scope) {
  

    initializeToZero();

    function initializeToZero() {
      if (!$scope.$$phase) {
        $scope.$apply();
        console.log($scope.a);
      } else {
        
        setTimeout(initializeToZero, 1000);
      }
    }



  });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl" ng-init="a = {}">
  <input type="number" ng-model="a['key1']">
  <input type="number" ng-model="a['key2']">
  <input type="number" ng-model="a['key3']">
  <input type="number" ng-model="a['key4']">
  <input type="number" ng-model="a['key5']">
  <input type="number" ng-model="a['key6']">
  <input type="number" ng-model="a['key7']">
  <input type="number" ng-model="a['key8']">


</div>

最佳答案

首先,使用 a.key1 而不是 a['key1'] 是一个很好的做法。其次,如果您想将所有 a 值分配为零,请在 Controller 的开头使用 map 函数:

$scope.a.map(function(item) { return '0'; });

这将返回 a,所有项目都设置为零。

关于javascript - 在加载 Angularjs 时从 Controller 初始化所有 ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121302/

相关文章:

javascript - 我在尝试从 Html 文本字段获取 img.src 时遇到错误

javascript - 在nodejs中模拟Eventemitter

javascript - 如何让用户使用十六进制和 css 渐变选择背景颜色

ruby-on-rails - Rails 4.1 ActionController::UnknownFormat 错误响应使用 AngularJS

javascript - Angular2 单击时获取 json 格式的字符串

javascript - 如何访问 xslt 中的 javascript 变量

javascript - 如何链接一系列返回 promise 并需要不同参数的函数?

angularjs - 如何检测 Angular JS中的位置更改成功和不成功?

json - 女士powershell : how to handle json- objects?

arrays - 如何将 jq 中相同字段值的值分组到数组中?