我们可以在angular JS的services promise中通过form加载本地json文件吗?

Can we load the local json file via form in angular JS services promise?

本文关键字:加载 form json 文件 angular JS promise services 我们      更新时间:2023-09-26

我试图通过表单填充我的json文件。javascript不会抛出任何错误,但是数据不会加载到json文件中。我现在还不习惯承诺。我可以看到一些从json文件中获取值的帖子,但反之亦然。有人能帮忙吗?

服务:

var module=angular.module('app',[]);
module.factory('memberDataStoreService',function($http)
{
    var memberDataStore = {};
    memberDataStore.addUser=function(adata){
        var promise=$http({
            method: 'POST',
            url: 'data.json',
            data: adata});
        return promise;
    }
     return memberDataStore;
 });
控制器

if ($scope.registrationForm.$valid) {
            $scope.working = true;
            var promise = memberDataStoreService.addUser($scope.person);
            promise.success(function () {
                $scope.showSuccessMessage = true;
            });
            promise.error(function (data, status) {
                $scope.showErrorMessage = true;
            });
            promise.finally(function () {
                $scope.working = false;
            });
            $scope.doShow = true;
        }

<div ng-controller="MyController">
        <form name="registrationForm" ng-submit="register()" novalidate>
            <div ng-show="showSuccessMessage">
                Thank you for taking the time to register!
            </div>
            <div class="error" ng-show="showErrorMessage">
                There appears to have been a problem with your registration.<br/>
            </div>
            <input type="text" placeholder="First Name" name="firstName" ng-model="person.firstName" required/>
            <span ng-show="firstNameInvalid"><br/>Please enter a value for First name</span>
            <br/>
            <input type="text" placeholder="Last Name" name="lastName" ng-model="person.lastName" required/>
            <span ng-show="lastNameInvalid"><br/>Please enter a value for Last name</span>
            <br/>
            <input type="email" placeholder="Email" name="email" ng-model="person.email" required/>
            <span ng-show="emailInvalid"><br/>A valid email address is required</span>
            <br/>
            <select name="research" ng-model="person.levels"
                    ng-options="obj.label as obj.value for obj in person.channels" required>
                <option value="">Where did you hear about us?</option>
            </select>
            <span ng-show="researchInvalid"><br/>Please tell us where you heard about us</span>
            <br/>
            <input ng-model="person.newsletterOptIn" type="checkbox" name="newsletterOptIn"
                   id="newsletterOptIn" value="newsletterOptIn"/>
            <label for="newsletterOptIn">Recieve monthly newsletter</label>
            <br/>
            <input ng-disabled="working" type="submit" value="Register"/>
            <span ng-show="working" style="padding-left:10px;">
            <img src="loading.gif"/>
            </span>
            </form>
        </div>
    </div>

根据angular的承诺文档,你的代码应该是这样的

https://docs.angularjs.org/api/ng/service/美元q

if ($scope.registrationForm.$valid) {
            $scope.working = true;
            var promise = memberDataStoreService.addUser($scope.person);
            promise.then(function () {
                $scope.showSuccessMessage = true;
            }).catch(function (data, status) {
                $scope.showErrorMessage = true;
            }).finally(function () {
                $scope.working = false;
            });
            $scope.doShow = true;
        }