我找到了很多相关的问题,并且回答是关于...在循环中并使用hasOwnProperty,但我没有做任何正常工作.我想要做的就是检查数组中是否存在键,如果没有,则添加它.
我从一个空数组开始,然后在用jQuery擦除页面时添加键.
最初,我希望像下面这样简单的东西可以工作:(使用通用名称)
if (!array[key])
array[key] = value;
Run Code Online (Sandbox Code Playgroud)
不行.跟着它:
for (var in array) {
if (!array.hasOwnProperty(var))
array[key] = value;
}
Run Code Online (Sandbox Code Playgroud)
还尝试过:
if (array.hasOwnProperty(key) == false)
array[key] = value;
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效.要么没有任何东西被推到阵列,要么我尝试的只不过array[key] = value是简单地宣称为什么这么简单如此难以做到.任何使这项工作的想法?
我正在尝试设计一种方法来将大量数据(超过1000行)加载到页面中,而不需要分页.这个问题的第一个障碍是以并行大小的块查询数据库,我已经在如何使用AngularJS进行顺序Rest Web服务调用的解决方案的帮助下完成了?
然而,我遇到了两个问题:
每个返回的对象都被传递到一个数组中,然后该数组本身作为Angular用于绑定的数组返回.即[[{key:value,key:value,key:value},{key:value,key:value,key:value}],[{key:value,key:value,key:value},{key: value,key:value,key:value}]]因此我不能使用ng-repeat ="item in data",因为data是一个数组数组.执行"数据[0]中的项目"确实使项目可用.连接似乎是答案,但我无法找到一种方法使其工作.
我正在向数据库发出多个请求,并且每个请求都会正确返回,但是在所有请求都完成之前页面才会呈现 - 这完全否定了首先执行多个请求的要点.
所以查看我的代码,如何重新编写它来解决这两个问题呢?那么数据作为一个数组返回,每次查询完成时都会呈现数据?
app.factory('ScanService', function($http, $q) {
function fetchOne(stepCount) {
return $http({
method: 'GET',
url: '/index.php/scans',
params: {step:stepCount}
})
.then(function onSuccess(response) {
return response.data;
}
return {
fetchAll: function(steps) {
var scans = [];
for (var i = 1; i <= steps; i++) {
scans.push(fetchOne(i));
}
return $q.all(scans);
}
};
});
app.controller.ScanCtrl = function($scope, $q, ScanService) {
$scope.scans = ScanService.fetchAll(10);
};
Run Code Online (Sandbox Code Playgroud)
跟进
我应该补充一点,我确实设法根据下面的解决方案和angular.forEach()来实现这一点.不能建议任何使用"大数据"的人走这条路.大约1000行,浏览器不堪重负,并开始大幅减速.尝试使用angular.filter进行过滤也会出现明显的延迟,直到结果缩小为止.另一方面,几百行工作得相当好,并允许本机过滤 - 这是我实现的关键目标.
我正处于使用AngularJS和RequireJS构建大型应用程序的初级阶段.一切都加载了,但是指令并没有按照它们的方式操纵DOM.没有报告错误,应用程序的其余部分工作正常:视图已加载且$ scope可绑定.检查控制台显示已加载所有文件.我假设这是一个懒惰的加载问题,因为我的指令根本没有在正确的时间加载.我很感激有关如何在这方面正确加载指令的任何见解.除非它是Angular的jqLite的一部分,否则请不要建议使用jQuery.
config.js
require.config({
paths: { angular: '../vendor/angular' }
shim: { angular: { exports: 'angular' } }
});
require(['angular'], function(angular) {
angular.bootstrap(document, ['myApp']);
});
Run Code Online (Sandbox Code Playgroud)
myApp.js
define(['angular', 'angular-resource'], function (angular) {
return angular.module('myApp', ['ngResource']);
});
Run Code Online (Sandbox Code Playgroud)
routing.js
define(['myApp', 'controllers/mainCtrl'], function (myApp) {
return myApp.config(['$routeProvider', function($routeProvider) {
...
}]);
});
Run Code Online (Sandbox Code Playgroud)
mainCtrl.js
define(['myApp', 'directives/myDirective'], function (myApp) {
return myApp.controller('mainCtrl', ['$scope', function ($scope) {
...
}]);
});
Run Code Online (Sandbox Code Playgroud)
myDirective.js
require(['myApp'], function (myApp) {
myApp.directive('superman', [function() {
return {
restrict: 'C',
template: '<div>Here I am to save …Run Code Online (Sandbox Code Playgroud) 使用Angular表单遇到一个奇怪的问题(运行1.2 rc.2).如果我在没有名称的情况下保留表单并在每个模型前加上一个通用名称,那么表单就可以正常发送.如果我从每个模型中删除前缀名称并为表单提供该名称,则提交操作不会绑定数据,并且表单会尝试发送空请求有效内容.
此模型工作正常,但Angular的表单验证未实例化
<form ng-submit="sendForm()">
<input type="text" ng-model="my_form.fullname">
<button type="submit">Submit</button>
<form>
Run Code Online (Sandbox Code Playgroud)
.
app.controller("MyCtrl", function($scope, $http) {
$scope.sendForm = function() {
$http({ method:'POST', url: '...', data: $scope.my_form; })
.then(function(result) { alert("The form was sent"); },
function(reason) { alert("There was a problem"); });
}
}
Run Code Online (Sandbox Code Playgroud)
所以现在如果我在表单中添加name属性并将其从模型中删除,表单会尝试发送空数据...
<form name="my_form" ng-submit="sendForm()">
<input type="text" ng-model="fullname">
<button type="submit">Submit</button>
<form>
Run Code Online (Sandbox Code Playgroud)
似乎my_form不再存在.实际上,如果我没有$scope.my_form = {}在控制器上初始化,表单甚至不会发送空对象.
关于如何使第二种方法起作用的任何建议?
angularjs ×3
arrays ×1
duplicates ×1
forms ×1
javascript ×1
jquery ×1
key-value ×1
requirejs ×1