将范围变量从控制器绑定到指令而不使用$ watch

问题描述 投票:1回答:1

对于Angular 1,我有一个在控制器中进行的AJAX调用(因为它依赖于在路由解析期间返回的另一组数据),并且一旦响应返回,数据就会传递给指令。由于数据在编译指令之后才会返回,因此指令最初为从控制器传递的数据获取undefined,并且只有在我观察每个指令内的范围值时才会获取数据。有没有更好的方法,我不必使用$scope.$watch或任何事件监听器,如$broadcast/$on?我不想用太多的观察者来消耗消化周期。

这是一个模拟结构:

<parent>
  <directive1 data="manipulateDataReturnedFromAJAXCall"></directive1>
</parent>

//template for directive1
<div>
  <directive2 ng-if="data" attr1="data.field1"></directive2>
<div>
angularjs angularjs-directive
1个回答
-1
投票

怎么样在你的callback服务中使用http

//Controller
MyHTTPService.getData(function(data){
    $scope.manipulateDataReturnedFromAJAXCall = data;
})

//MyHTTPService service
return{
    getData : function(fct){
       $http.get("url/to/data").then(function(response){
           fct(response.data);
       })
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.