Browse Source

fixed initialization bugs

Rashid Khan 12 years ago
parent
commit
7580042b29
3 changed files with 16 additions and 4 deletions
  1. 6 3
      src/app/app.js
  2. 7 1
      src/app/directives/kibanaPanel.js
  3. 3 0
      src/app/services/dashboard.js

+ 6 - 3
src/app/app.js

@@ -136,9 +136,12 @@ function (angular, $, _, appLevelRequire) {
               var $scope = this;
               var $scope = this;
               $scope.requireContext(deps, function () {
               $scope.requireContext(deps, function () {
                 var deps = _.toArray(arguments);
                 var deps = _.toArray(arguments);
-                $scope.$apply(function () {
-                  fn.apply($scope, deps);
-                });
+                // Check that this is a valid scope.
+                if($scope.$id) {
+                  $scope.$apply(function () {
+                    fn.apply($scope, deps);
+                  });
+                }
               });
               });
             };
             };
           }]);
           }]);

+ 7 - 1
src/app/directives/kibanaPanel.js

@@ -61,16 +61,22 @@ function (angular) {
         link: function($scope, elem, attr) {
         link: function($scope, elem, attr) {
           // once we have the template, scan it for controllers and
           // once we have the template, scan it for controllers and
           // load the module.js if we have any
           // load the module.js if we have any
+          var newScope = $scope.$new();
 
 
           // compile the module and uncloack. We're done
           // compile the module and uncloack. We're done
           function loadModule($module) {
           function loadModule($module) {
             $module.appendTo(elem);
             $module.appendTo(elem);
             elem.wrap(container);
             elem.wrap(container);
             /* jshint indent:false */
             /* jshint indent:false */
-            $compile(elem.contents())($scope);
+            $compile(elem.contents())(newScope);
             elem.removeClass("ng-cloak");
             elem.removeClass("ng-cloak");
           }
           }
 
 
+          newScope.$on('$destroy',function(){
+            elem.unbind();
+            elem.remove();
+          });
+
           $scope.$watch(attr.type, function (name) {
           $scope.$watch(attr.type, function (name) {
             elem.addClass("ng-cloak");
             elem.addClass("ng-cloak");
             // load the panels module file, then render it in the dom.
             // load the panels module file, then render it in the dom.

+ 3 - 0
src/app/services/dashboard.js

@@ -134,6 +134,9 @@ function (angular, $, kbn, _, config, moment, Modernizr) {
     // here before telling the panels to refresh
     // here before telling the panels to refresh
     this.refresh = function() {
     this.refresh = function() {
       if(self.current.index.interval !== 'none') {
       if(self.current.index.interval !== 'none') {
+        if(_.isUndefined(filterSrv)) {
+          return;
+        }
         if(filterSrv.idsByType('time').length > 0) {
         if(filterSrv.idsByType('time').length > 0) {
           var _range = filterSrv.timeRange('last');
           var _range = filterSrv.timeRange('last');
           kbnIndex.indices(_range.from,_range.to,
           kbnIndex.indices(_range.from,_range.to,