2016-09-23 79 views
1

我目前正在开发一个简单的单页应用程序,点击一些<li>,您可以使用ngClick发送一些数据。这<li>■找父母<div>,我应用CSS样式angular.element和所有的东西...与操纵DOM的AngularJS指令通信

问题是,当我点击这个ngClick我做一些$http电话,并得到一个JSON填补内部控制变量。所以,当用户点击其他没有任何共同点的菜单时(按照控制器和指令),我填入其他列表,当用户点击这个列表时,我必须设置前面提到的<li>,这是一个指令。

所以,我不知道如何告诉的link参考,它必须具有一些我不知道如何传递的属性的样式,也许服务可以读取?我想使用一种服务来存储从控制器传递给指令的信息,但是我对Angular是新手,我不知道该怎么做。我搜查了很多,但没有找到我正在寻找的东西。我想到了使用$watch,但我的变量来监视在控制器上,所以我必须回到父范围,像2次回到达到它。

非常感谢!

+0

你可以根据任何条件使用ng-style或ng-class。 – Hmahwish

+0

我无法使用它,因为我从JSON recibe了一些图像,我将其用作将从数据库加载的'background-image'。谢谢 ! – matiaslauriti

回答

1
<div ng-controller="Ctrl as ctrl" ng-style="ctrl.style"> 
    <my-dir on-fetch="ctrl.style = $style"></my-dir> 
</div> 

module.directive('myDir', function(){ 
    return { 
     restrict: 'E', 
     template: '<li ng-click="$ctrl.fetch()"></li>', 
     controller: function(){ 
      var $ctrl = this; 
      this.fetch = function(){ 
       api.fetch().then(function(stylesFromResponse){ 
        $ctrl.onFetch({$style: stylesFromResponse}); 
       }); 
      }; 
     }, 
     bindToController: true, 
     controllerAs: '$ctrl', 
     scope: { 
      onFetch: '&' 
     } 
    }; 
}); 
+0

我几乎不明白你写的任何东西......你能否在你的回答中解释,以便我可以适应它,谢谢! – matiaslauriti

+0

据我所知,你有指令,它应该获取onClick数据,并在获取数据时与父控制器进行通信。在我的示例中,获取li是myDir,它在内部处理onClick,并在获取准备就绪时处理调用控制器方法或外部代码。 –

+0

我编辑示例,展示如何为外部代码提供值 –