2016-08-05 50 views
0

我在我的頭中使用自定義指令來打開登錄模式上點擊指令控制器從標題(其工作正常,模態打開成功)功能。在HTML模式我也有一個按鈕(登錄)當我從指令點擊登錄其呼叫的另一個功能(RegistrationModal),但它拋出一個錯誤不是沒有打開,請檢查代碼錯誤的角js指令打開模式時

.directive('header', function() { 
    return { 
     restrict: 'E', 
     templateUrl: HTML.HEADER, 
     scope: true, 
     controller: function ($scope, $rootScope, $http, $templateCache,$compile) { 
      $scope.RegistrationModal = function() { 
       $(".modal").remove(); 
       $(".modal-backdrop").remove(); 
       $http.get(HTML.SIGN_UP, {cache: $templateCache}).success(function (data) { 
        $(document.body).append($compile(data)($scope)); 
        $('#sign-up1').modal('show'); 
       }); 
      } 
      $scope.loginModal = function() { 
       if ($("#sign-up1").length > 0) { 
        $('#sign-up1').modal('hide'); 
       } 
       console.log(">>>>>>>>>>>>in login") 
       $http.get(HTML.LOGIN, {cache: $templateCache}).success(function (data) { 
        console.log(">>>>>>>>>>>...data is>>>>>.", data); 
        $(document.body).append($compile(data)($scope)); 
        $('#login-popup').modal('show'); 
       }); 
      } 

     }, 


    }; 
    return directive; 
}) 

錯誤

angular.js:13708 TypeError: Cannot convert undefined or null to object

+1

你可以請張貼一個plunker和詳細的堆棧跟蹤?這將有助於更好! – Srijith

+0

@Srijith ......我想確認一件事。一旦我從指令調用loginModal函數並且函數編譯模板數據並將其附加到主體.again我從同一指令調用RegistrationModal函數應該銷燬示波器或其他任何東西 –

+0

如果您想在項目中使用模態,我會推薦使用[ui-bootstrap](http://angular-ui.github.io/bootstrap/) – Emidomh

回答

0

什麼是HTML對象?您將其用作全局變量,因此可能超出範圍。

你應該注入所有這些東西作爲服務或常量。

+0

..... HTML對象是常量services.issue的一部分與此無關...我認爲當我再次綁定範圍時編譯問題可能與此行相關$(document.body).append( $ compile(data)($ scope))。 –

+0

那麼這段摘錄的哪一行會給出錯誤? PS:你不應該一起使用Angular和jQuery。 –