Javascript 如何将表单输入数据从数据列表传递到角度控制器?
我在一个小型宠物项目中工作,该项目可以找到汇率,但我在将输入传递到角度控制器时遇到了问题。 假设我有一个数据列表输入,在您键入时显示选择的国家:Javascript 如何将表单输入数据从数据列表传递到角度控制器?,javascript,angularjs,html,Javascript,Angularjs,Html,我在一个小型宠物项目中工作,该项目可以找到汇率,但我在将输入传递到角度控制器时遇到了问题。 假设我有一个数据列表输入,在您键入时显示选择的国家: <label for="ajax">From</label> <input type="text" id="ajax" list="json-datalist"> <datalist id="json-datalist"></datalist> 默认情况下,“fromCode”设置为USD,
<label for="ajax">From</label>
<input type="text" id="ajax" list="json-datalist">
<datalist id="json-datalist"></datalist>
默认情况下,“fromCode”设置为USD,并且应该随着datalist项的更改而更新。每次更改输入表单中的数据列表选择时,我都希望执行新的查找。如何完成此操作?您不应该将任何内容从视图传递到控制器。您的所有数据都应来自控制器。html页面上的所有javascript都应该在控制器中 完成此操作后,您可以使用ng repeat和ng model将视图绑定到控制器,并且数据将在控制器中自动更新。请阅读。关键是要使用。
// Get the <datalist> and <input> elements.
var dataList = document.getElementById('json-datalist');
var input = document.getElementById('ajax');
var fromCode = 'USD';
// Create a new XMLHttpRequest.
var request = new XMLHttpRequest();
// Handle state changes for the request.
request.onreadystatechange = function(response) {
if (request.readyState === 4) {
if (request.status === 200) {
// Parse the JSON
var jsonOptions = JSON.parse(request.responseText);
// Loop over the JSON array.
jsonOptions.forEach(function(item) {
// Create a new <option> element.
var option = document.createElement('option');
// Set the value using the item in the JSON array.
option.value = item.name;
fromCode = item.code;
// Add the <option> element to the <datalist>.
console.log(option);
dataList.appendChild(option);
});
// Update the placeholder text.
input.placeholder = "e.g. United States Dollar - USD";
} else {
// An error occured :(
input.placeholder = "Couldn't load currency options :(";
}
}
};
// Update the placeholder text.
input.placeholder = "Loading currencies...";
// Set up and make the request.
request.open('GET', 'js/currencies.json', true);
request.send();
var myApp = angular.module("myApp", []);
myApp.controller("myController", ['$scope', '$http', function ($scope, $http) {
$scope.from = fromCode;
$http.get("https://api.fixer.io/latest?symbols=" + $scope.from)
.then(function (response) {
$scope.newRate = response.data;
});
$http.get("https://api.fixer.io/latest?base=USD")
.then(function (response) {
$scope.currencies = response.data;
});
}]);