将输入字段值POST到工厂到REST后端,而不会污染全局空间

时间:2013-11-16 15:13:15

标签: angularjs

在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”方式。您能告诉我如何改进代码,以便将输入字段中获取的值传递给工厂而不会污染全局命名空间吗?

1 个答案:

答案 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");
        }
    );
};