给对象分配新字段
Javascript Assign New Field to object
这里有一段运行在节点应用程序中的代码
for( i=0; i < Equipment.length; i += 1 ) {
Equipment[i].NumberForSearch = Equipment[i].ClassPrefix + "-" + Equipment[i].UnitNumber;
console.log(Equipment[i].NumberForSearch);
}
console.log(Equipment[0]);
Equipment是一个对象数组,我正在尝试为该数组中的每个对象添加一个名为"NumberForSearch"的属性。
在我的应用程序中,我们想要显示设备的单位编号的方式是"ClasssPrefix"-"UnitNumber"。我想在这里将它们连接到一个变量的原因是,在我的角应用程序中,我希望用户能够在搜索字段中输入12345-12345,然后过滤掉设备。如果我有{{ClassPrefix}}-{{UnitNumber}},这就不起作用了,因为很明显,angular甚至不知道这个-存在。
问题是,在我的for循环中,一切都检查得很好。它就像它应该的那样记录,所以我认为它是有效的。当我检查前端并将其更改为显示"NumberForSearch"时,没有显示任何内容。
然后我在for循环之外添加了日志记录语句来检查我的一个对象,看看这个字段是否存在,它不存在。所以我的问题是,为什么这个片段不添加"NumberForSearch"字段在我的对象?
您必须在设置$scope的参数之前使用此字段创建对象。
看一下init()函数
在添加NumberForSearch字段后,我们定义了一个对象数组来在作用域中参数化。
当然ng-repeat会遍历它并呈现元素。
所以我们将添加"| filter:query"来显示只需要的
<div ng-controller="EquipmentController">
<input type="text" ng-model="query.NumberForSearch" placeholder="search">
<ul>
<li ng-repeat="Item in Equipment | filter:query">{{Item.ClassPrefix}}-{{Item.UnitNumber}}</li>
</ul>
</div>
js的部分:
var App = angular.module('App', []);
App.controller('EquipmentController', function ($rootScope, $scope, $http, $filter) {
$scope.Equipment = [];
$scope.init = function() {
var request = $http({
method: 'get',
url: '/path/to/equipment/resource'
});
request.success(function (response) {
var Equipment = response.Equipment;
for(var i in Equipment) {
Equipment[i].NumberForSearch = Equipment[i].ClassPrefix + "-" + Equipment[i].UnitNumber;
}
$scope.Equipment = Equipment;
$scope.$apply();
});
}
$scope.init();
});
另一种过滤方式是将搜索字段发送到路由,换句话说,我们将查询发送到服务器,服务器端过滤响应。
<div ng-controller="EquipmentController">
<input type="text" ng-model="queryNumber" ng-change="searchByNumber()" placeholder="search">
<ul>
<li ng-repeat="Item in Equipment">{{Item.ClassPrefix}}-{{Item.UnitNumber}}</li>
</ul>
</div>
js的部分:
var App = angular.module('App', []);
App.controller('EquipmentController', function ($rootScope, $scope, $http, $filter) {
$scope.Equipment = [];
$scope.all = function() {
var request = $http({
method: 'get',
url: '/path/to/equipment/resource'
});
request.success(function (response) {
$scope.Equipment = response.Equipment;
$scope.$apply();
});
}
$scope.all();
$scope.searchByNumber = function() {
var request = $http({
method: 'get',
url: '/path/to/equipment/resource?number='+$scope.queryNumber
});
request.success(function (response) {
$scope.Equipment = response.Equipment;
$scope.$apply();
});
}
});
相关文章:
- MeteorJS:用户集合如何公开新字段
- 使用 WYIHTML5 添加包含 gem 的新字段nested_form
- 在商店定位器谷歌地图api中的商店面板中添加新字段
- Lodash:如何向集合中的所有值添加新字段
- 在选择(rails_admin)时更改时在模态窗口中添加新字段
- 向文档 mongodb 添加新字段
- 对嵌套表单中的新字段重新应用 jquery - Rails 3
- 如何使用angularjs多次单击按钮时添加新字段
- 将新字段追加到窗体
- 在JS添加新字段后,cakephp表单未正确提交
- “嵌套模型表单”可以正确添加新字段,但 coffeescript 行为不会影响页面上现有字段等新字段
- 动态添加新字段后提交表单
- mongodb在数组中插入一个新字段
- 如何在当前表单中动态添加新字段
- 在新字段中设置值的空格后丢失文本
- JQuery使新字段成为必需字段
- 如果我选择了一个特定的单选按钮,如何在表单中添加新字段
- 动态添加新字段将重置先前字段中的值
- $将来自不同集合的$project和$concat值聚合到一个新字段
- 我需要动态地向表单添加更多字段,并使新字段的输入值也发生变化