2014-02-17 47 views
0

我有一個jQuery UI對話框,在這個彈出框中我有一個動態的<select>帶有角度和Ajax請求。如果我點擊一個按鈕,我的對話框就會出現,但即使對話框不可見,也會播放AngularJS腳本。在javascript代碼中加載AngularJS控制器

我停在我的腳本的條件:if($("#MyDialog).dialog("isOpen") ===true)"

和它的作品,但我不知道如何「刷新」我的角器加載選擇輸入顯示我的對話框時...

我試過這個:MyController(angular.element($('div[ng-controller="MyController"]')).scope(), angular.element($('div[ng-controller="MyController"]')).http);

但它不工作...任何想法?

我控制器代碼:

function MyController($scope, $http) { 
    if ($("#myDialog").dialog("isOpen") === true) { 
     $http. 
      success(function (data, status, headers, config) { 
       $scope.select = data; 
      }). 
      error(function (data, status, headers, config) { 
       alert("error !"); 
      }); 
    } 
} 
+0

這是在angular.js反模式 - >'$( 「#myDialog」)',這個代碼也許應該活得指令內。請提供一個plunker –

+1

如果您沒有嘗試強制實施他們的實踐,那麼使用AngularJS沒有意義。您不應該訪問控制器中的DOM元素。 – plalx

回答

0

不是訪問模式是否打開的嘗試將在開放的模式按鈕或鏈接一個NG-點擊。

<button ng-click="loadSelectData()">Open Modal</button> 

<script> 
    app.controller("MyController", ["$scope", "$http", function($scope, $http) { 
     $scope.loadSelectData = function() { 
      // fetch your select data 
      // also you can check if you already have the data before going to server 
     } 
    }]); 
</script> 
+0

我將使用由angular控制的jquery ui對話框,因此我的選擇框將像您那樣在ng-click上加載。謝謝 ! – Azuken