显示来自 ngcontroller 别名的 ngrepeat 属性

Display attribute of ngrepeat from ngcontroller alias

没有 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');
    });     

}]);

由于方式 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');
      });

  }
]);