在Angularjs中,我试图将用户输入的值输入到输入字段中,然后将其发送到我的REST后端。
这是工厂:
myfac.factory('prosFactory', ['$http', function ($http) {
var baseUrl = 'https://api.parse.com/1/classes/Buddies';
var parseCredentials = {headers: { 'X-Parse-Application-Id':'xxx', 'X-Parse-REST-API-Key':'yyy', 'Content-Type': 'application/json'}};
return {
postPros: function () {
return $http.post(baseUrl, {"firstName":myInput, parseCredentials);
}
}
}
]);
这是控制器:
function AddProcontroller($scope, prosFactory) {
$scope.addPros = function() {
myInput = $scope.firstName; // pollutes global namespace
prosFactory.postPros()
.success(function(data, status) {
alert("added !!");
}).error(function(data, status) {
alert("error");
}
);
}
}
这是html:
<form name="addProForm" ng-controller="AddProcontroller">
<div> First Name: <input name="firstName" ng-model="firstName"></div>
<button type="button" ng-click="addPros()">Add entry</button>
</form>
系统正常工作,您可以看到“myInput”是一个变量,用于抓取字段内容并在工厂中将其传递给上面。问题是myInput在全局命名空间中,而这个系统并不是真正的“angularJs”方式。您能告诉我如何改进代码,以便将输入字段中获取的值传递给工厂而不会污染全局命名空间吗?
答案 0 :(得分:2)
将其作为参数传递:
postPros: function (myInput) {
return $http.post(baseUrl, {"firstName":myInput}, parseCredentials);
}
$scope.addPros = function() {
prosFactory.postPros($scope.firstName)
.success(function(data, status) {
alert("added !!");
}).error(function(data, status) {
alert("error");
}
);
};