2017-06-18 78 views
-1

我在页面中显示一个窗口小部件,该窗口小部件显示一些带有几个过滤器的数据的谷歌图表,以过滤图表数据并使用打印图标进行打印。在模式中展开页面元素

我想添加一个按钮来打开同一个窗口小部件,图表,过滤器和打印功能以较大的屏幕视图模式工作。因为该小部件在页面中很小。

我试图添加一个按钮,并在链接函数中添加了一个函数,以在模式中打开element.html(),但html工作正常,但问题在于过滤器和打印不起作用。

element.html()怎么了?我已经厌倦了使用$ compile,但它让我陷入了许多错误。我可以使用什么?

app.directive("widget", function ($rootScope) { 
     return { 
       restrict: "EA", 
       scope: { 
         title: '=', 
         options: '=' 
       }, 
       transclude: true, 
       templateUrl: "widget.html", 
       link: function(scope, element, attrs, ctrl, transclude) { 
        scope.print = function() {....} 
        scope.filterChart = function() {....} 

        scope.expand = function() { 
         $rootScope.openModal("expand Modal", element.html(), {});  
        } 
       } 
     } 

注意$ rootScope.openModal仅仅是使用$模式服务的包装服务,需要一个标题和正文

+0

@MaximShoustin done – sisimh

+0

当您不包含该代码时,我们无法判断您使用'element.html()'时出现了什么问题。通常AngularJS指令需要使用$ compile服务进行编译。如果简单地添加'element.html()',它们将不起作用。如果您使用$ compile服务发现错误,则需要查看该代码以及这些错误消息的完整文本。 – georgeawg

回答

0

我认为我们有一些设计问题。

理清头绪:

你有一些逻辑(在你的情况“与图表,过滤器和打印功能的窗口小部件”)

这个逻辑应该在directivecomponent来实现(1.5+) 。

所以指令名是widget像你一样。

这个指令可以在主页面实现(你到目前为止所做的)或作为模态的一部分。该模式仅适用于您的widget包装。因此,创建新的emplty模式,把里面<widget title="xx" options=someOptions></widget>对你的罚款


既然你有隔离范围指令我看不出有什么问题,使其工作。

+0

问题是过滤器无法正常工作,所以在模式打开之后,如果我在过滤器函数或打印功能中添加console.log,然后单击模态内的那些..没有任何反应 – sisimh

+0

每个模态都有自己的模式范围,因此检查范围是否更新 –