gpt4 book ai didi

javascript - 如何将 AngularJS 范围对象转换为简单的 JS 数组?

转载 作者:行者123 更新时间:2023-11-28 01:09:30 26 4
gpt4 key购买 nike

如何将 AngularJS 范围对象转换为简单的 JS 数组?

此函数检查是否选中了任何复选框,并将相应的值添加到对象。现在我想将对象值传输到数组并在按下按钮后提醒它。但是结果是未定义的,为什么?

var formApp = angular.module('formApp', [])

.controller('formController', function($scope) {

// we will store our form data in this object
$scope.formData = {};


});

var array = Object.keys(formData).map(function(k) { return obj[k] });

function test(){

alert(array);
}
<-- index.html -->
<!DOCTYPE html>
<html>
<head>

<!-- CSS -->
<!-- load up bootstrap and add some spacing -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<style>
body { padding-top:50px; }
form { margin-bottom:50px; }
</style>

<!-- JS -->
<!-- load up angular and our custom script -->
<script src="http://code.angularjs.org/1.2.13/angular.js"></script>
<script src="app.js"></script>
</head>

<!-- apply our angular app and controller -->
<body ng-app="formApp" ng-controller="formController">
<div class="col-xs-12 col-sm-10 col-sm-offset-1">

<h2>Angular Checkboxes </h2>


...

<!-- MULTIPLE CHECKBOXES -->
<label>Favorite Colors</label>
<div class="form-group">
<label class="checkbox-inline">
<input type="checkbox" name="favoriteColors" ng-model="formData.favoriteColors.red"> Red
</label><br>
<label class="checkbox-inline">
<input type="checkbox" name="favoriteColors" ng-model="formData.favoriteColors.blue"> Blue
</label> <br>
<label class="checkbox-inline">
<input type="checkbox" name="favoriteColors" ng-model="formData.favoriteColors.green"> Green
</label>
</div>

...

<!-- SHOW OFF OUR FORMDATA OBJECT -->
<h2>formData_object_is_not_empty-test</h2>
<pre>
{{formData}}
</pre>
<button onclick="test()">Click me</button>
</div>
</body>
</html>

最佳答案

试试这个:

var formApp = angular.module('formApp', [])

.controller('formController', function($scope) {

// we will store our form data in this object
$scope.formData = {};
var array = Object.keys($scope.formData).map(function(k) { return obj[k] });
// wait for the formData to change and then alert
setTimeout(function() {
alert(array);
}, 2000);


});

Angular 的制作方式不允许您访问 Controller 外部的范围变量。

如果你想将数组作为调试信息,使用像AngularJS Batarang这样的浏览器插件。或使用 console.log(array) 而不是 alert(array) 或尝试使用 document.array = array 将数组保存在全局变量中,因此您可以在浏览器控制台中访问它。

关于javascript - 如何将 AngularJS 范围对象转换为简单的 JS 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38304686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com