Javascript 使用多个文本框的输入形成地址列表序列
我正在构建一个结构化地址序列,用于在谷歌地图中搜索。 我在所有文本框中添加了Javascript 使用多个文本框的输入形成地址列表序列,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我正在构建一个结构化地址序列,用于在谷歌地图中搜索。 我在所有文本框中添加了ng change,以收集数据。 地址如下 地址行1 地址行2 区域 城市 陈述 国家 因此,当用户开始在任何字段中输入地址时,地址应将其自身构造为 例如:“地址行1、地址行2、地区、城市、国家” HTML: 但这种逻辑在多种情况下都失败了。 谢谢是的,您可以使用 var app = angular.module("myApp", []); app.controller("addressController", fun
ng change
,以收集数据。
地址如下
谢谢是的,您可以使用
var app = angular.module("myApp", []);
app.controller("addressController", function($scope) {
$scope.getAddress = function(address) {
var line1 = $scope.address.line1 || '';
var line2 = $scope.address.line2 || '';
var area = $scope.address.area || '';
var city = $scope.address.city || '';
var state = $scope.address.state || '';
var country = $scope.address.country || '';
$scope.enteredAddress = line1 + ',' + line2 + ',' + area + ',' + city + ',' + state + ',' + country;
};
});
这是你的电话号码
希望有帮助:)是的,您可以使用
var app = angular.module("myApp", []);
app.controller("addressController", function($scope) {
$scope.getAddress = function(address) {
var line1 = $scope.address.line1 || '';
var line2 = $scope.address.line2 || '';
var area = $scope.address.area || '';
var city = $scope.address.city || '';
var state = $scope.address.state || '';
var country = $scope.address.country || '';
$scope.enteredAddress = line1 + ',' + line2 + ',' + area + ',' + city + ',' + state + ',' + country;
};
});
这是你的电话号码
希望它有帮助:)更具陈述性
$scope.getAddress = function(address) {
$scope.enteredAddress = 'line1|line2|area|city|state'
.split('|') //create properties ordered list (array)
.map(function(name) { return address[name]}) //get values
.filter(Boolean) //remove empty
.join(', '); //join with comma
}
更具陈述性
$scope.getAddress = function(address) {
$scope.enteredAddress = 'line1|line2|area|city|state'
.split('|') //create properties ordered list (array)
.map(function(name) { return address[name]}) //get values
.filter(Boolean) //remove empty
.join(', '); //join with comma
}
使用Array\map
覆盖Object.key
,然后使用Array\join
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.address={
第1行:“”,
第2行:“”,
区域:“”,
城市:'',
声明:'',
国家:''
};
$scope.enteredAddress='';
$scope.getAddress=函数(地址){
var address=Object.keys(address).map(函数(项){
回信地址[项目];
}).过滤器(布尔值);
$scope.entereddress=address.join(',');
}
});代码>
地址行1
{{address.line1}}
地址行1
地区
城市
陈述
国家
{{entereddress}
使用Array\map
覆盖Object.key
,然后使用Array\join
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.address={
第1行:“”,
第2行:“”,
区域:“”,
城市:'',
声明:'',
国家:''
};
$scope.enteredAddress='';
$scope.getAddress=函数(地址){
var address=Object.keys(address).map(函数(项){
回信地址[项目];
}).过滤器(布尔值);
$scope.entereddress=address.join(',');
}
});代码>
地址行1
{{address.line1}}
地址行1
地区
城市
陈述
国家
{{entereddress}
感谢您提供的解决方案。但是如果我不输入任何文本,如何避免中间出现多个逗号(,)?@Forgotofly代码在链接中更新,但您可以使用人造丝答案。它非常有效且经过优化:)感谢您的解决方案。但是如果我不输入任何文本,如何避免中间出现多个逗号(,)?@Forgotofly代码在链接中更新,但您可以使用人造丝答案。它非常有效且经过优化:)Object.keys
以任意顺序提供键。这不会过滤空值。@YuryTarabanko,filter
很好,但第一个原因非常深刻。。谢谢;)处理硬编码键是唯一的选择?您无法预测对象的迭代顺序。键
,因为它与对象的
相同。。。在中,但没有继承的属性。所以我认为是的,唯一的方法是先设置属性列表。@YuryTarabanko,检查更新!这样,如果键在对象中
,则将遵循所提供的顺序。。纠正我,我假设的是错误的;)<代码>对象。键以任意顺序提供键。这不会过滤空值。@YuryTarabanko,过滤
很好,但第一个原因很深。。谢谢;)处理硬编码键是唯一的选择?您无法预测对象的迭代顺序。键,因为它与对象的相同。。。在中,但没有继承的属性。所以我认为是的,唯一的方法是先设置属性列表。@YuryTarabanko,检查更新!这样,如果键在对象中
,则将遵循所提供的顺序。。纠正我,我假设的是错误的;)
$scope.getAddresss = function(address) {
var add1, add2, area, city, state, country;
if (address.addressLine1) {
add1 = address.addressLine1 + ', ';
}
if (address.addressLine2) {
add2 = address.addressLine2 + ', ';
}
if (address.area) {
area = address.area + ', ';
}
if (address.city) {
city = address.city + ', ';
}
if (address.state) {
state = address.state + ', ';
}
$scope.enteredAddress = add1 + add2 + area + city + state + country;
}