0

我在 ng-app 中替换我的 ng-repeat 我的 html 时遇到问题

<a href="#proceed" ng-click="order.submitOrderAjax()">
    <?php print t('Finish order'); ?>
</a>

<ul>
    <li ng-repeat="error in order.errors">{{ error.text }}</li>
</ul>

控制器 app.js

app.controller('orderController', function() {
this.errors = [];
this.submitOrderAjax = function(){
 var data = {} // some data here like name, phone
 jQuery.ajax({
    type: 'POST',
    url: Drupal.settings.basePath + 'ajax/submit_cart',
    data: { 'order': data },
    dataType: 'json',
    success: function(response){
        if(response.status == true){
            var link = response.link.replace(/\\\//g, "/");
            window.location.href = link;
        }else{
            this.errors = response.errors;
            console.log(this.errors);
        }   
    },
 });
};

console.log 返回我需要的内容,但 ng-repeat 没有更新

4

1 回答 1

0

实际上 html 在响应之前呈现,因此您需要在响应之后呈现 ng-repeat

<a href="#proceed" ng-click="order.submitOrderAjax()">
    <?php print t('Finish order'); ?>
</a>

<ul ng-if="flag">
    <li ng-repeat="error in order.errors">{{ error.text }}</li>
</ul>

控制器

    app.controller('orderController', function($scope) {
    this.errors = [];
$scope.flag=false;
    this.submitOrderAjax = function(){
        var data = {} // some data here like name, phone
        jQuery.ajax({
            type: 'POST',
            url: Drupal.settings.basePath + 'ajax/submit_cart',
            data: { 'order': data },
            dataType: 'json',
            success: function(response){
                if(response.status == true){
                        var link = response.link.replace(/\\\//g, "/");
                        window.location.href = link;

                }else{
                    this.errors = response.errors;
                    console.log(this.errors);
$scope.flag=true;
                }   
            },
          });
        };
于 2015-06-09T12:44:06.600 回答