从ngcontroller别名显示ngrepeat的属性

时间:2015-10-23 07:19:09

标签: angularjs angularjs-ng-repeat ng-controller

如果没有ngcontroller别名,我可以获取数据。但是,当使用别名时,我不能。这里我的错误是什么?

HTML标记:

<div style="padding: 10px" id="content_dv" ng-controller="displaytopic_ctrl as f">
     <div class="topic_dv" ng-repeat="t in f.topic">
        <p>{{ t.MEMBER_NAME }}</p>
     </div>
</div>
app.js中的

.controller('displaytopic_ctrl', ['$http', function($http) {

    $http({
        method: 'get',
        url: api_url + 'get_topic_list.php', 
        data: {
            type: 'all'
        }

    }).success(function(d){     
        if(d.t=='p'){
            this.topic = d.topic;
        }
    }).error(
    function(){
        console.log('Query error');
    });     

}]);

1 个答案:

答案 0 :(得分:0)

由于JavaScript closures work的方式,您在成功回调中使用的this变量不是控制器。解决此问题的最常用机制是为控制器创建一个别名,您可以在回调中引用它。

例如:

.controller('displaytopic_ctrl', ['$http',
  function($http) {
    var controller = this;

    $http({
      method: 'get',
      url: api_url + 'get_topic_list.php',
      data: {
        type: 'all'
      }

    }).success(function(d) {
      if (d.t == 'p') {
        controller.topic = d.topic;
      }
    }).error(
      function() {
        console.log('Query error');
      });

  }
]);