Angular它在点击按钮时采用旧参数

时间:2016-09-15 12:49:42

标签: javascript angularjs web

我正在尝试添加一个按钮,当单击该按钮时,会调用一个带参数的函数并将其发送到我的服务器。到目前为止它看起来像这样:

<table class="table table-hover">
    <thead>
    <tr>
        <th>Id</th>
    </tr>
    </thead>
    <tbody>
    <tr data-ng-repeat="interview in $ctrl.pendingInterviews">
        <td>{{ interview.id }}</td>
        <td><a href="/#!/pending-interviews-list?interviewId={{interview.id}}"><input type="submit" name="Submit" id="submit" ng-click="$ctrl.addParticipant();"></a></td>
    </tr>
    </tbody>
</table>

我的角色成分中包含的内容:

var participant={
                    username:"mama",
                    interviewId:$routeParams.interviewId
                };
                console.log(participant);
                console.log(JSON.stringify(participant));

                this.addParticipant = function saveParticipant() {
                    console.log("in partikip")
                    Interview.addParticipant(JSON.stringify(participant))
                        .then(
                            function (errResponse) {
                                console.error('Error while fetching pending interviews');
                            }
                        );
                }

我的角色服务中有什么:

function addParticipant(participant) {
                console.log("Im here too");
                console.log(participant + "asdasdsda");
                var deferred = $q.defer();
                $http.post('http://localhost:8080/interviewsupdateparticipant', participant)
                    .then(
                        function (response) {
                            deferred.resolve(response.data);
                        },
                        function (errResponse) {
                            console.error('Error while adding participant');
                            console.error(''+ participant.username +  participant.interviewId)
                            deferred.reject(errResponse);
                        }
                    );
                return deferred.promise;
            }

问题是,当我转到我的页面时,来自控制器的参与者将用户名设置为mama,并将interviewId设置为undefined。当我单击提交按钮时,它会发送未定义的和硬编码的用户名,而不是发送id和硬编码的用户名。为什么?为什么不自动获得面试?

当我单击“提交”时,由于某种原因,ID仍然未定义,只有在我再次单击时才会更改。任何想法可能是什么问题?

1 个答案:

答案 0 :(得分:2)

许多可以解决这个问题的事情:

  • 如果您的网址有可变部分
  • ,请尝试使用ngHref而非href
  • 尝试将interview.id作为参数传递给addParticipant()方法,而不是通过$routeParams变量获取
  • 您在任何表单外都有input type="submit",在<a>链接中,请尝试更改