我陷入了一个问题,我应该获得所有声明为 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/