我在AngularJS中实现了动态仪表板

时间:2013-02-13 10:39:24

标签: angularjs requirejs

我可以实现类似的内容:

    $scope.showDashboard = function () {
        $scope.dashboardPath = "/Widgets/Weather/View.htm";
        $scope.widgetController = 30;

        require(['/Widgets/Weather/Controller.js'], function (w) {               
            whatShouldIputHere = w;
        });


    };


 <div ng-include src="dashboardPath" ng-controller="whatShouldIputHere?"></div>

是否可以动态地将控制器分配给ng-include?

仪表板上可能有许多小部件

3 个答案:

答案 0 :(得分:4)

正在开发一个项目,通过AngularJS实现仪表板功能。

特点:

  • 添加/删除小部件
  • 小工具拖放
  • 任何指令都可以是小部件

运行演示http://nickholub.github.io/angular-dashboard-app

演示源代码https://github.com/nickholub/angular-dashboard-app

Dashboard指令本身https://github.com/nickholub/angular-ui-dashboard

答案 1 :(得分:2)

我们在开源hawtio项目中创建了一个基于angularjs的仪表板。如果您愿意,可以在这里找代码:

https://github.com/hawtio/hawtio/tree/master/hawtio-web/src/main/webapp/app/dashboard

对于仪表板上的每个小部件,我们直接使用子范围编译部分 https://github.com/hawtio/hawtio/blob/master/hawtio-web/src/main/webapp/app/dashboard/js/dashboard.ts#L142

虽然我们必须修补angularjs以允许我们在子范围上使用自定义注入。例如这样我们就可以为每个子窗口小部件使用$ location的不同实现(所以它认为它在自己的真实URL上​​等)。希望当支持自定义注射器时,我们可以转向它。

答案 2 :(得分:0)

为什么不使用单个控制器(具有showDashboard方法的控制器),而不是使用动态控制器。 使用ng-include添加动态控制器将导致嵌套控制器,这是非法的。而不是使用ng-include作为属性,而是将其用作元素。

<ng-include src="dashboardPath"></ng-include>