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

时间:2017-12-22 21:54:48

标签: angularjs angularjs-directive

对于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>

1 个答案:

答案 0 :(得分:-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);
       })
    }
}