将服务注入指令AngularJS和数据绑定。

时间:2016-02-14 04:05:47

标签: javascript angularjs service directive

我创建了一个使用$ http获取数据的服务,这个数据存储在本服务的变量中,我创建了一个使用该服务创建带选项的标签选择的指令,这些选项是在服务中获得的,但这是我的问题,所获得的数据永远不会与指令连接。

服务和指令:

<div id = 'fixed'> I'm Fixed </div>
<div id = 'normal'> I'm Normal </div>

使用Chrome的DevTool我可以看到数据在$ http运行后更新,但数据未显示在选项中。

上面的代码是我需要做的一个例子。

2 个答案:

答案 0 :(得分:1)

您的$http调用会返回一个promise对象。将$http调用包装在函数中并返回promise对象,然后在您的指令中调用此函数并解析promise对象并获取数据。

具体地,

getData(){
  return $http({
       method: 'GET',
       url: 'urlToDataJson'
       }).then(function(resp){
            listOptions = resp.data
   ); // this returns a promise
}

然后在你的指令中解决这样的承诺:

MyService.getData().then(function(data){
   console.log(data); // <-- this is how you access the result of your $http call
});

答案 1 :(得分:0)

你也可以这样做,

return $q(function (resolve, reject) {

    $http({
        method: 'GET',
        url: 'urlToDataJson'
        }).then(function(resp){
            $scope.responseDate = resp.data;
            resolve(responseData);
        });
});