在模板中显示控制器返回的结果

时间:2016-07-26 15:11:16

标签: angularjs

我从HTML调用函数,我想显示返回的结果。

这是html代码:

 <td ng-init="'damages = list.getDamageEvents(soData.damagesId)'">
     {{damages}}
 </td>

这是控制器中的功能:

self.getDamageEvents = function (reviewsId) {
    var t;
    return $http.get(config.baseUrl + "api/DamageEvent/GetEventsByReviewsId/" + reviewsId).then(function (result) {
         t=result.data;
    });
    return t
}

getDamageEvents()函数返回一些字符串。

但在模板视图中,我看不到任何返回的结果。

  

编辑:我需要访问getDamageEvents函数作为隔离范围。

知道我为什么看不到返回的结果?

3 个答案:

答案 0 :(得分:2)

$ http.get 返回promise,因此您无法在函数getDamageEvents结尾处返回结果,而应将结果影响到名为成功回调中的损害赔偿:

self.getDamageEvents = function (reviewsId) {
   $http.get(config.baseUrl + "api/DamageEvent/GetEventsByReviewsId/" + reviewsId)
   .then(function (result) {
     self.damages = result.data;
   });
}

然后您可以在视图中访问损坏变量

答案 1 :(得分:2)

恢复数据的功能应设置$scope.damages

self.getDamageEvents = function (reviewsId) {
    var t;
    return $http.get(config.baseUrl + "api/DamageEvent/GetEventsByReviewsId/" + reviewsId).then(function (result) {
         t = result.data;
         $scope.damages = t;
    });
    return t;
}

不知道您的完整代码,因此我没有删除return t;声明,但我想您不需要它。

答案 2 :(得分:1)

执行此操作时:

{{damages}}

Angular将检查名称和损坏的变量&#39;在你的范围内。那么你在控制器范围内有一个具有该确切名称的变量吗?即:

$scope.damages = ...

(假设您没有使用controllerAs语法)。