访问指令中的scope属性,其中属性通过Ajax设置

时间:2015-11-19 21:22:49

标签: javascript angularjs ajax web frontend

我在Ajax响应函数中设置了$scope的值。

$http.post('/aUrl', someData)
    .then(function(response) {
        $scope.value = response.data;
    });

这意味着在undefined回调运行之前它是.then

我想在自定义指令中使用此值,如下所示:

myModule.directive('myDirective', function() {
    return {
        scope: {
            value: '='
        },
        link: function(scope, element, attributes) {
            // do stuff with scope.value...
        }
    };
});

在模板中:

<div my-directive value="value"></div>

但是,当链接功能运行时,该值仍为undefined

处理这个问题的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以观看更改的值:

attributes.$observe('value', function (val) {
    if (val) {

    }
});

答案 1 :(得分:0)

实现此目标的最安全的解决方案是在服务中共享数据。我创造了一个用来演示的傻瓜。

myAppModule.factory("pollingService", function ($http, $timeout, $q) {
  var svc = this;
  svc.data = { resp: {}, count: 0};
  svc.count = 0;

  svc.poller = function() {
    svc.count++;
    return $http.get('data.json').then(function(r) {
      svc.data.count=svc.count;
      //console.log(data);
      $timeout(svc.poller, 4500);
    });
  };

  return svc;

});

http://plnkr.co/edit/RVz7ru?p=preview

但是,有很多方法可以实现您的目标,我强烈建议您在使用Angular时遵循本指南。它将保持您的代码清洁,并准备轻松移植到Angular 2。 https://github.com/johnpapa/angular-styleguide