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