在$ http

时间:2016-11-11 08:08:08

标签: angularjs

我试图通过$ http调用从json加载div中的一些元素。但无论我尝试什么,清单仍然是空的。这是代码。

  <div class="submenu" >
            <div class="menuitem" ng-repeat="item in navigator"  >{{item}}
                <a href="#/main/welcome/{{item.messageId}}">{{item.label}}</a>
    </div>

这是一个抽象状态,我在路由中为它指定了控制器greetingctrl。 JS代码是

app.controller('greetingCtrl',function($scope,$cookieStore,$timeout,$state,msg,SERVICE,RestService,$stateParams){

    $scope.list = [];
    $scope.navigator;

    $scope.options.loading = false;
    var currentmsg;
    $scope.user = $cookieStore.get('userinfo');


    $scope.init = function(){           
        var url = SERVICE.greetingMsg;
        var data = {
            providerID : $cookieStore.get('userinfo').providerId,
            loginID : $cookieStore.get('userinfo').loginId,
            action : "GET_MESSAGE"
        }
        RestService.post(url,data).then(function(res){   
            $scope.navigator = res.messages;
        },
        function(err){
            console.log(err);

        });
    }

在这里,我可以成功接收数据,但列表中的数据永远不会出现。 RestService.post是我在服务中定义的$ http方法。我使用的是角1.5.8,我是角色的新手。

编辑:删除了ng-show和ng-if。数据仍无法显示

4 个答案:

答案 0 :(得分:1)

您需要检查两个变量:
- showmenu我根本没有看到它的价值发生变化,所以它总是false - loadingisDone与上一个相同。

请记得在某个地方拨打$scope.init

答案 1 :(得分:0)

ng-if标签包含什么,它应该有一些条件要检查   改成   0' &GT; 试试它是否有效

答案 2 :(得分:0)

您不需要在同一标签上使用ng-if和ng-show两个指令。 您可以使用其中任何一个来显示使用&amp;&amp; || 运算符的DIV。 请检查变量的值是否正确更新。

答案 3 :(得分:-1)

对于异步执行,请使用$ scope。$ apply来更新范围数据。

RestService.post(url,data).then(function(res){   
   $scope.$apply(function() {
      $scope.navigator = res.messages;
   });
}