ngDialog中文API

.open(options)

打開對(duì)話窗口浑槽,在每次調(diào)用時(shí)創(chuàng)建新的對(duì)話框?qū)嵗搿=邮軐?duì)象作為唯一的參數(shù)焙畔。

參數(shù)選項(xiàng)Options:

template {String}

對(duì)話框模板可以通過所給路徑加載外部html模板或type="text/ng-template"的script標(biāo)簽县遣。

<script type="text/ng-template" id="templateId">
    <h1>Template heading</h1>
    <p>Content goes here</p>
</script>

ngDialog.open({ template: 'templateId' });

當(dāng)然虱咧,還可以使用簡(jiǎn)單的字符串作為模板和plain選項(xiàng)。
tips:
并不一定要將外部html模板放在script標(biāo)簽中种樱×衣樱可以將模板放在
$templateCache中:

angular.module('dialog.templates').run(['$templateCache', function($templateCache) {
    $templateCache.put('templateId', 'template content');
}]);

然后可以將dialog.templates模塊包含在主模塊的依賴項(xiàng)中,并開始使用該模板作為templateId:
無需手動(dòng)執(zhí)行這些操作缸托,可以使用插件。 它們可用于不同的構(gòu)建系統(tǒng)瘾蛋,包括最受歡迎的Gulp / Grunt:

plain {Boolean}

默認(rèn)為false俐镐,如果為true則允許使用純字符串作為模板。

ngDialog.open({
    template: '<p>my template</p>',
    plain: true
});

controller {String} | {Array} | {Object}

controller是對(duì)話窗口的控制器哺哼。 控制器可以通過名稱引用或直接內(nèi)聯(lián)來指定佩抹。

ngDialog.open({
    template: 'externalTemplate.html',
    controller: 'SomeController'
});
//或者
ngDialog.open({
    template: 'externalTemplate.html',
    controller: ['$scope', 'otherService', function($scope,
                 otherService) {
                 // controller logic
    }]
});

controllerAs {String}

可以選擇為控制器指定controllerAs參數(shù)。 然后在你的模板里面取董,可以把這個(gè)控制器引用給controllerAs指定的值棍苹。
AngularJS團(tuán)隊(duì)目前推薦使用controllerAs語(yǔ)法。

resolve {Object.<String, Function>}

(可選)給控制器注入依賴關(guān)系映射茵汰。 如果這些依賴關(guān)系中的任何一個(gè)都是promises【這里的promise不知道怎么翻】枢里,ngDialog將等待所有這些依賴關(guān)系解決,或者一個(gè)被拒絕,然后才能實(shí)例化控制器栏豺。
如果所有的promises都成功解決了彬碱,解決的promises值就會(huì)被注入。
映射對(duì)象如下:

  • key – {String}: 要注入控制器的依賴項(xiàng)的名稱奥洼。
  • factory - {String | Function}:如果是String類型巷疼,那么它是一個(gè)服務(wù)的別名。如果是Function灵奖,那么它將使用$ injector.invoke進(jìn)行注入嚼沿,返回依賴關(guān)系。如果返回的是一個(gè)promises瓷患,則在將其值注入到控制器之前解決骡尽。
ngDialog.open({
    controller: function Ctrl(dep) {/*...*/},
    resolve: {
        dep: function depFactory() {
            return 'dep value';
        }
    }
});

scope {Object}

將scope對(duì)象傳遞給對(duì)話框。如果使用具有單獨(dú)的$scope服務(wù)的控制器尉尾,則此對(duì)象將被傳遞到$scope.$parent:

$scope.value = true;

ngDialog.open({
    template: 'externalTemplate.html',
    className: 'ngdialog-theme-plain',
    scope: $scope
});

<script type="text/ng-template" id="externalTemplate.html">
<p>External scope: <code>{{value}}</code></p>
</script>

scope.closeThisDialog(value)

.closeThisDialog(value)方法被注入到傳遞的$ scope中爆阶。這可以直接關(guān)閉彈出的對(duì)話框,例如:

<div class="dialog-contents">
    <input type="text"/>
    <input type="button" value="OK" ng-click="checkInput() && closeThisDialog('Some value')"/>
</div>

傳遞給此函數(shù)的任何值將附加到該對(duì)話框?qū)ο笊稀?對(duì)于使用openConfirm()方法打開的對(duì)話框沙咏,這個(gè)值被用作reject reason辨图。

data {String | Object | Array}

data表示任何要存儲(chǔ)在控制器對(duì)話框范圍內(nèi)的可序列化數(shù)據(jù)。
($scope.ngDialogData)肢藐。 從版本0.3.6 $scope.ngDialogData保持對(duì)對(duì)象的引用故河,而不是復(fù)制它們。

className {String}

此選項(xiàng)用于控制對(duì)話框的外觀吆豹,可以使用內(nèi)置主題或創(chuàng)建自己的樣式模式鱼的。

ngDialog.open({
    template: 'templateId',
    className: 'ngdialog-theme-default'
});

注意:如果沒有提到className,對(duì)話框?qū)o法正確顯示痘煤。

appendClassName {String}

不同于className屬性通過setDefaults()方法覆蓋指定的任何默認(rèn)類凑阶,appendClassName允許在任何默認(rèn)值之上添加一個(gè)類。

ngDialogProvider.setDefaults({
    className: 'ngdialog-theme-default'
});
ngDialog.open({
    template: 'template.html',
    appendClassName: 'ngdialog-custom'
});

disableAnimation {Boolean}

如果為true衷快,則對(duì)話框的動(dòng)畫將被禁用宙橱,默認(rèn)為false。

overlay {Boolean}

如果為false蘸拔,則在dialog框中隱藏重疊div师郑,默認(rèn)為true。

showClose {Boolean}

如果為false调窍,則隱藏dialog框關(guān)閉按鈕宝冕,默認(rèn)為true。

closeByEscape {Boolean}

通過單擊Esc鍵關(guān)閉對(duì)話框邓萨,默認(rèn)為true地梨。
如果同時(shí)打開幾個(gè)對(duì)話框菊卷,單擊Esc鍵將關(guān)閉所有打開的對(duì)話框。

closeByNavigation {Boolean}

關(guān)閉對(duì)話框的狀態(tài)變更(history.back湿刽,$ state.go等)的烁,默認(rèn)為false。 兼容ui-router和angular-router诈闺。如果需要在返回或更改狀態(tài)時(shí)關(guān)閉對(duì)話框渴庆,應(yīng)該將此值設(shè)置為true。 如果需要在應(yīng)用中更改狀態(tài)時(shí)雅镊,對(duì)話框保持打開狀態(tài)襟雷,應(yīng)該將此值設(shè)置為false。
如果同時(shí)打開其中的幾個(gè)仁烹,狀態(tài)變更將關(guān)閉所有打開的對(duì)話框耸弄。

closeByDocument {Boolean}

通過點(diǎn)擊覆蓋背景關(guān)閉對(duì)話框,默認(rèn)為true卓缰。

appendTo {String}

指定元素添加到對(duì)話框?qū)嵗霞瞥剩邮茏址x擇器(例如#yourId,.yourClass)征唬。 如果沒有指定則默認(rèn)將body添加到對(duì)話框捌显。

cache {Boolean}

如果為false則禁用dialog緩存。 默認(rèn)為true总寒,用于開發(fā)目的扶歪。

name {String} | {Number}

給出一個(gè)對(duì)話框?qū)嵗拿Q。 如果打開了多個(gè)對(duì)話框摄闸,則識(shí)別特定對(duì)話框很有用善镰。

onOpenCallback {String} | {Function}

在打開對(duì)話框后提供要調(diào)用的函數(shù)或函數(shù)的名稱∧暾恚可以使用此回調(diào)代替ngdialog.opened事件炫欺。當(dāng)對(duì)話框附加到DOM并將要向用戶顯示時(shí)提供了一種注冊(cè)hook的方法。

preCloseCallback {String} | {Function}

在關(guān)閉對(duì)話框之前提供要調(diào)用的函數(shù)或函數(shù)的名稱熏兄。如果該選項(xiàng)中指定的回調(diào)函數(shù)返回false竣稽,則對(duì)話框?qū)⒉粫?huì)關(guān)閉』舻或者,如果回調(diào)函數(shù)返回一個(gè)解決的promise娃弓,對(duì)話框?qū)⒈魂P(guān)閉典格。
preCloseCallback函數(shù)接收作為與.close(id,value)相同的參數(shù)值台丛。
主要功能是能夠彈出對(duì)話框耍缴。包含用戶操作(例如編輯數(shù)據(jù))砾肺,能夠在退出對(duì)話框時(shí)(例如通過轉(zhuǎn)義鍵)確認(rèn)是否丟棄未保存的更改。
此示例在preCloseCallback函數(shù)中使用帶有window.confirm調(diào)用的內(nèi)聯(lián)函數(shù):

ngDialog.open({
    preCloseCallback: function(value) {
        if (confirm('Are you sure you want to close without saving your changes?')) {
            return true;
        }
        return false;
    }
});

在另一個(gè)示例中防嗡,使用具有嵌套確認(rèn)ngDialog的回調(diào)函數(shù):

ngDialog.open({
    preCloseCallback: function(value) {
        var nestedConfirmDialog = ngDialog.openConfirm({
            template:'\
                <p>Are you sure you want to close the parent dialog?</p>\
                <div class="ngdialog-buttons">\
                    <button type="button" class="ngdialog-button ngdialog-button-secondary" ng-click="closeThisDialog(0)">No</button>\
                    <button type="button" class="ngdialog-button ngdialog-button-primary" ng-click="confirm(1)">Yes</button>\
                </div>',
            plain: true
        });

        // NOTE: return the promise from openConfirm
        return nestedConfirmDialog;
    }
});

trapFocus {Boolean}

如果為true变汪,則可確保聚焦的元素保持在對(duì)話框內(nèi)以符合可訪問性建議。 默認(rèn)值為true蚁趁。

preserveFocus {Boolean}

如果為true裙盾,則關(guān)閉對(duì)話框后將焦點(diǎn)恢復(fù)到啟動(dòng)它的元素上。旨在改善鍵盤輔助功能他嫡。默認(rèn)為true番官。

ariaAuto {Boolean}

如果為true,則自動(dòng)為任何未指定的輔助功能屬性選擇適當(dāng)?shù)闹蹈质簟DJ(rèn)為true徘熔。

ariaRole {String}

指定應(yīng)用于對(duì)話框元素的角色屬性的值。默認(rèn)值為null(未指定)淆党。

ariaLabelledById {String}

指定應(yīng)用于對(duì)話框元素的aria-labelledby屬性的值酷师。默認(rèn)值為null(未指定)。
如果指定染乌,則該值不會(huì)針對(duì)DOM進(jìn)行驗(yàn)證山孔。

ariaLabelledBySelector {String}

指定對(duì)象元素上由aria-labelledby屬性引用的元素的CSS選擇器。默認(rèn)值為null(未指定)慕匠。
如果指定饱须,則使用第一個(gè)匹配元素。

ariaDescribedById {String}

指定應(yīng)用于對(duì)話框元素的aria描述的屬性的值台谊。默認(rèn)值為null(未指定)蓉媳。
如果指定,則該值不會(huì)針對(duì)DOM進(jìn)行驗(yàn)證锅铅。

ariaDescribedBySelector {String}

指定對(duì)象元素上由aria描述的屬性引用的元素的CSS選擇器酪呻。默認(rèn)值為null(未指定)。
如果指定盐须,則使用第一個(gè)匹配元素玩荠。

width {Number | String}

此選項(xiàng)用來控制對(duì)話框的寬度。默認(rèn)值為null(未指定)贼邓。

//寬度為400px
ngDialog.open({
    template: 'template.html',
    width: 400
});
//自定義百分比寬度
ngDialog.open({
    template: 'template.html',
    width: '40%'
});

height {Number | String}

此選項(xiàng)用來控制對(duì)話框的高度阶冈。默認(rèn)值為null(未指定)。

//高度為400px
ngDialog.open({
    template: 'template.html',
    height: 400
});
//自定義百分比高度
ngDialog.open({
    template: 'template.html',
    height: '40%'
});

返回值Returns:

open()方法返回一個(gè)具有一些有用屬性的對(duì)象塑径。

id {String}

這是剛剛創(chuàng)建的對(duì)話框的ID女坑。 它是對(duì)話框的DOM元素上的ID。

close(value) {Function}

這是一個(gè)函數(shù)统舀,它將關(guān)閉當(dāng)前調(diào)用open()打開的對(duì)話框匆骗。 它需要一個(gè)可選的值來傳遞給接近的promise劳景。

closePromise {Promise}

當(dāng)對(duì)話框關(guān)閉時(shí),將會(huì)解決promise碉就。通過一個(gè)對(duì)象盟广,包含:

  • id-關(guān)閉對(duì)話框的ID
  • value-關(guān)閉的對(duì)話框的值
  • $dialog-此時(shí)已從DOM中刪除的對(duì)話框元素
  • remainingDialogs-其余的對(duì)話框仍然打開
    如果對(duì)話框被其中一個(gè)內(nèi)置機(jī)制('$escape', '$closeButton' 或者 '$document'.)關(guān)閉,value屬性將是一個(gè)特殊的字符串瓮钥。
var dialog = ngDialog.open({
    template: 'templateId'
});

dialog.closePromise.then(function (data) {
    console.log(data.id + ' has been dismissed.');
});

.setDefaults(options)

通過ngDialogProvider設(shè)置默認(rèn)設(shè)置:

var app = angular.module('myApp', ['ngDialog']);
app.config(['ngDialogProvider', function (ngDialogProvider) {
    ngDialogProvider.setDefaults({
        className: 'ngdialog-theme-default',
        plain: true,
        showClose: true,
        closeByDocument: true,
        closeByEscape: true
    });
}]);

.openConfirm(options)

打開一個(gè)對(duì)話框筋量,默認(rèn)情況下,在對(duì)話窗口中點(diǎn)擊轉(zhuǎn)義或點(diǎn)擊時(shí)骏庸,該對(duì)話框不會(huì)關(guān)閉毛甲。該函數(shù)返回根據(jù)對(duì)話框關(guān)閉方式解析或拒絕的promise。

參數(shù)選項(xiàng)Options:

這個(gè)方法的參數(shù)選項(xiàng)與.open()方法相同具被,并添加了一個(gè)額外的函數(shù):

scope.confirm()

方法.confirm()也被注入到傳遞的$ scope中玻募。使用此方法關(guān)閉對(duì)話框并解決打開模態(tài)時(shí)返回的promise。
該函數(shù)接受一個(gè)可選參數(shù)一姿,該參數(shù)用作解析的promise的值七咧。

<div class="dialog-contents">
    Some message
    <button ng-click="closeThisDialog()">Cancel</button>
    <button ng-click="confirm()">Confirm</button>
</div>

返回值Returns:

如果使用.confirm()函數(shù)來關(guān)閉對(duì)話框可以解決的Angular promise對(duì)象,否則promise被拒絕叮叹。解析值和拒絕原因由傳遞給confirm()或closeThisDialog()調(diào)用的值定義艾栋。

.isOpen(id)

方法接受對(duì)話框的id,并返回一個(gè)布爾值蛉顽,指示指定的對(duì)話框是否打開蝗砾。

.close(id, value)

方法接受對(duì)話框的id作為字符串參數(shù)來關(guān)閉特定的對(duì)話窗口,如果沒有指定id携冤,它將關(guān)閉所有當(dāng)前活動(dòng)的模式(與.closeAll()相同的行為)悼粮。使用(或所有對(duì)話框promise)解決對(duì)話框promise的可選值。

.closeAll(value)

方法管理關(guān)閉頁(yè)面上的所有活動(dòng)模式曾棕。 使用可選值來解決所有的對(duì)話框promise扣猫。

.getOpenDialogs()

返回包含打開的對(duì)話框的ID的數(shù)組。

.setForceHtmlReload({Boolean})

在每個(gè)$ locationChangeSuccess事件上添加一個(gè)附加偵聽器翘地,并將html的更新版本轉(zhuǎn)換為對(duì)話框申尤。
在某些罕見的情況下,當(dāng)應(yīng)用依賴于DOM更改時(shí)衙耕,可能會(huì)有用昧穿,默認(rèn)為false。
在ngDialogProvider中配置:

var app = angular.module('exampleApp', ['ngDialog']);

app.config(function (ngDialogProvider) {
    ngDialogProvider.setForceHtmlReload(true);
});

.setForceBodyReload({Boolean})

在每個(gè)$ locationChangeSuccess事件上添加額外的偵聽器橙喘,并將更新版本的body轉(zhuǎn)換為對(duì)話框时鸵。
在某些罕見的情況下,當(dāng)應(yīng)用依賴于DOM更改時(shí)渴杆,可能會(huì)有用寥枝,默認(rèn)為false。
在ngDialogProvider中配置:

var app = angular.module('exampleApp', ['ngDialog']);

app.config(function (ngDialogProvider) {
    ngDialogProvider.setForceBodyReload(true);
});

.setOpenOnePerName({Boolean})

默認(rèn)值:false
定義是否同時(shí)打開同名的對(duì)話框多次磁奖。 分配true可以防止打開第二個(gè)對(duì)話框囊拜。
在ngDialogProvider中配置:

var app = angular.module('exampleApp', ['ngDialog']);

app.config(function (ngDialogProvider) {
    ngDialogProvider.setOpenOnePerName(true);
});

一定要記得在打開對(duì)話框時(shí)添加“名稱”。 如果對(duì)話框未打開比搭,ngDialog'open'和'openConfirm'函數(shù)將返回undefined冠跷。

指令Directive

默認(rèn)情況下,ngDialog模塊提供ngDialog指令身诺,可用作按鈕蜜托,鏈接等屬性。
幾乎所有.open()選項(xiàng)也可以通過標(biāo)簽屬性使用霉赡,唯一的區(qū)別是需要ng-template id或模板文件的路徑橄务。
例如:

<button type="button"
    ng-dialog="templateId.html"
    ng-dialog-class="ngdialog-theme-flat"
    ng-dialog-controller="ModalCtrl"
    ng-dialog-close-previous>
    Open modal text
</button>

可以選擇使用ng-dialog-bind-to-controller將通過參數(shù)參數(shù)定義的范圍綁定到控制器。
有關(guān)bindToController的更多信息點(diǎn)擊此處穴亏。
指令包含另外一個(gè)但非常有用的選項(xiàng)蜂挪,它是一個(gè)名為ng-dialog-close-previous的屬性。 允許自動(dòng)關(guān)閉以前打開的對(duì)話框嗓化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棠涮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刺覆,更是在濱河造成了極大的恐慌严肪,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谦屑,死亡現(xiàn)場(chǎng)離奇詭異驳糯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伦仍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門结窘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人充蓝,你說我怎么就攤上這事隧枫。” “怎么了谓苟?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵官脓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我涝焙,道長(zhǎng)卑笨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任仑撞,我火速辦了婚禮赤兴,結(jié)果婚禮上妖滔,老公的妹妹穿的比我還像新娘桶良。我一直安慰自己陨帆,他們只是感情好疲牵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布纲爸。 她就那樣靜靜地躺著,像睡著了一般读虏。 火紅的嫁衣襯著肌膚如雪盖桥。 梳的紋絲不亂的頭發(fā)上题翻,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天塑荒,我揣著相機(jī)與錄音姜挺,去河邊找鬼。 笑死凌箕,一個(gè)胖子當(dāng)著我的面吹牛词渤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缺虐,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼顷牌!你這毒婦竟也來了塞淹?” 一聲冷哼從身側(cè)響起窖铡,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤费彼,失蹤者是張志新(化名)和其女友劉穎箍铲,沒想到半個(gè)月后颠猴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體小染,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡资盅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年踊赠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筐带。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伦籍,靈堂內(nèi)的尸體忽然破棺而出蓝晒,到底是詐尸還是另有隱情鸽斟,我是刑警寧澤拔创,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站剩燥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜灭红,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一侣滩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧君珠,春花似錦、人聲如沸策添。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旺拉。三九已至,卻和暖如春晋涣,著一層夾襖步出監(jiān)牢的瞬間沉桌,已是汗流浹背姻僧。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒲牧,地道東北人撇贺。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像冰抢,于是被迫代替她去往敵國(guó)和親松嘶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容