模態框間相互傳輸數據

A界面中打開B模態框,如果需要引用到A界面裏面的某個數據,就是需要把A界面裏面的某個值傳給B模態框。

 

在A界面中調用模態框:

modalInstance=$modal.open({
     backdropClick: true,
     dialogFade: false,
     keyboard: true,
     backdrop: 'static',
     size : "lg",
     templateUrl : 'apps/modules/waittingTask/signerAllot.html',
     controller : signerAllotController,
     resolve:{
         "rowData": function(){
             return data;//這個data其實本界面請求後臺得到的數據,因爲懶就直接給這個模態框了
         }
}
 });

介紹之前先說一下$model裏面的方法,其實就一個open方法,接下來就介紹下open裏面的屬性。

1.templateUrl:模態窗口的地址(就是你要打開的模態框界面html文件的路徑

2.template:用於顯示html標籤(暫時還沒有用到過)

3.scope:一個作用域爲模態的內容使用(事實上,$modal會創建一個當前作用域的子作用域)默認爲$rootScope

4.controller:爲$modal指定的控制器,初始化$scope,該控制器可用$modalInstance注入(是你這個模態框界面對應js文件裏面的controller,以前我在這就犯過錯)

5.resolve:定義一個成員並將他傳遞給$modal指定的控制器,相當於routes的一個reslove屬性,如果需要傳遞一個objec對象,需要使用angular.copy()

注:第5點重點講一下這個吧,因爲經常會用到。如果你傳的參數比較少的話,就直接定義參數就好,參數過多的話就封成一個對象再傳吧,然後直接在模態框的controller的參數裏面加上這個你自己定義的參數就行,然後就可以用了。下面的代碼會有示例!

6.backdrop:控制背景,允許的值:true(默認),false(無背景),“static” - 背景是存在的,但點擊模態窗口之外時,模態窗口不關閉

7.keyboard:當按下Esc時,模態對話框是否關閉,默認爲ture

8.windowClass:指定一個class並被添加到模態窗口中

 

open方法返回一個實例,該實例具有如下屬性:

1.close(result):關閉模態窗口並傳遞一個結果

2.dismiss(reason):撤銷模態方法並傳遞一個原因

3.result:一個契約,當模態窗口被關閉或撤銷時傳遞

4.opened:一個契約,當模態窗口打開並且加載完內容時傳遞的變量

 

modalInstance.opened.then(function() {// 模態窗口打開之後執行的函數

                    console.log('modal is opened');

                });

//接收模態框返回值

modalInstance.result.then(function (result) {//這個result就是在關閉模態框時調用close方法時傳遞的參數(看上面的實例屬性)

     if(typeof(result)!="undefined"){//判斷是否有這個返回結果,省的報錯

           //簽單員選擇邏輯

           $scope.scheduleInsurance4SignVO[$scope.index] = result;

       }

   }, function (reason) {//這個reason就是模態框的實例調用dismiss時候傳遞的參數

       //模態框不傳參數時調用

       console.log('Modal dismissed : ' + reason);

   });

注:在模態框對應的controller裏的參數裏面,一般會傳一個對話框的實例$modalInstance

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章