Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jarvis.widget不';无法在AngularJS ng repeat中渲染_Javascript_Jquery Plugins_Angularjs Directive_Angularjs Ng Repeat_Singlepage - Fatal编程技术网

Javascript Jarvis.widget不';无法在AngularJS ng repeat中渲染

Javascript Jarvis.widget不';无法在AngularJS ng repeat中渲染,javascript,jquery-plugins,angularjs-directive,angularjs-ng-repeat,singlepage,Javascript,Jquery Plugins,Angularjs Directive,Angularjs Ng Repeat,Singlepage,在我的AngularJs单页中,我很难想出该做什么。我使用ng repeat来显示许多小部件。插件是“Jarvis widget v2.0”。我的问题是,文章容器没有来自Jarvis小部件的功能(全屏、折叠等) 由于HTTP GET调用,数据延迟。如果我硬编码dataSeries,它可以100%工作,但是看起来Jarvis小部件在HTTP GET的成功之前就已经呈现出来了。几天来我一直在努力寻找解决方案,我猜指令就是解决方案,但我迷路了 <article class="col-xs-12

在我的AngularJs单页中,我很难想出该做什么。我使用
ng repeat
来显示许多小部件。插件是“Jarvis widget v2.0”。我的问题是,文章容器没有来自Jarvis小部件的功能(全屏、折叠等)

由于HTTP GET调用,数据延迟。如果我硬编码dataSeries,它可以100%工作,但是看起来Jarvis小部件在HTTP GET的成功之前就已经呈现出来了。几天来我一直在努力寻找解决方案,我猜指令就是解决方案,但我迷路了

<article class="col-xs-12 col-sm-12 col-md-6 col-lg-6" ng-repeat="chart in dataSeries">
       <div class="jarviswidget" id="wid-id-02" data-widget-editbutton="false" data-widget-colorbutton="false" data-widget-deletebutton="false"></div>
</article>


这是我的第一篇帖子,如果我忘了什么,我会提前道歉。

函数设置中的代码\u widgets\u desktop()将基于当前(!)HTML内容创建小部件。由于HTTP请求成功后,
ng repeat
将呈现元素,因此调用函数时不存在元素

为了实现您想要的行为,请在回调返回后再次执行
setup\u widgets\u desktop()
。您可能需要使用
$timeout(setup\u widgets\u desktop,1000)
来确保延迟。我是这样使用它的,但不确定延迟是否是一个普遍的要求

最好的选择是将调用
$('#widget grid').jarvisWidgets()
提取到指令中。您可以用获取当前$(元素)来替换
$(“#小部件网格”)
,因此它只绑定到当前元素,而不是DOM中的某个固定ID。如果你需要更多的建议,就给我写信吧

编辑(示例代码):

在我的项目中,我正在使用以下Angular服务(您必须根据需要替换应用程序、HTTP URI和jQuery选择器):

然后,控制器应如下所示:

function($scope, $http, presenter) {
    ...
    $http("api/data").success(function(data) {
        $scope.dataSeries= data;
        presenter.layout();
    });
    ...
}

function setup\u widgets\u desktop()
中的代码将基于当前(!)HTML内容创建小部件。由于HTTP请求成功后,
ng repeat
将呈现元素,因此调用函数时不存在元素

为了实现您想要的行为,请在回调返回后再次执行
setup\u widgets\u desktop()
。您可能需要使用
$timeout(setup\u widgets\u desktop,1000)
来确保延迟。我是这样使用它的,但不确定延迟是否是一个普遍的要求

最好的选择是将调用
$('#widget grid').jarvisWidgets()
提取到指令中。您可以用获取当前$(元素)来替换
$(“#小部件网格”)
,因此它只绑定到当前元素,而不是DOM中的某个固定ID。如果你需要更多的建议,就给我写信吧

编辑(示例代码):

在我的项目中,我正在使用以下Angular服务(您必须根据需要替换应用程序、HTTP URI和jQuery选择器):

然后,控制器应如下所示:

function($scope, $http, presenter) {
    ...
    $http("api/data").success(function(data) {
        $scope.dataSeries= data;
        presenter.layout();
    });
    ...
}

好的,在Darneas的帮助下,我想出了一个解决办法

  • 我实施了以下措施: :
  • 我确保“小部件网格”没有初始化(我有一些测试小部件)
  • 我从ngRepeatFinished调用了“setup\u widgets\u desktop()”
  • 这是成功的。谢谢你,达尼亚斯。否则我就找不到解决办法了


    我无法让widget指令工作,这看起来也是一个很好的解决方案。

    好的,在Darneas的帮助下,我想出了一个解决方案

  • 我实施了以下措施: :
  • 我确保“小部件网格”没有初始化(我有一些测试小部件)
  • 我从ngRepeatFinished调用了“setup\u widgets\u desktop()”
  • 这是成功的。谢谢你,达尼亚斯。否则我就找不到解决办法了


    我无法让widget指令工作,这看起来也是一个很好的解决方案。

    嗨,Darneas。谢谢你的回复。你能用一点代码详细说明你的答案吗?我非常感激!这更清楚了,但我还是不能让它工作。您是否碰巧有一个JSFIDLE运行实例?不幸的是,这些小部件不是开源的,所以我无法构建FIDLE。编辑后的答案中给出了您需要的代码。当你发布你的相关部分(完整的控制器功能)时,我可以看一看。嗨,Darneas。谢谢你的回复。你能用一点代码详细说明你的答案吗?我非常感激!这更清楚了,但我还是不能让它工作。您是否碰巧有一个JSFIDLE运行实例?不幸的是,这些小部件不是开源的,所以我无法构建FIDLE。编辑后的答案中给出了您需要的代码。当你张贴你的相关部分(完整的控制器功能),我可以看看它。