introjs 打开和突出显示模式 window md-dialog
introjs opening and highlighting modal window md-dialog
我正在使用 introjs,我想知道是否有办法让它打开模态 window 并将其突出显示为导览的一部分。这在 JSON 对象中看起来如何?
目前,我有一个打开导览的按钮:
<md-button class="md-accent md-raised" ng-click="startIntro();"><i class="fa fa-play-circle" aria-hidden="true"></i> Take a Tour</md-button>
我的游览步骤是在客户端控制器的 JSON 对象中定义的:
$scope.startIntro = function(){
var intro = introJs();
intro.setOptions({
steps: [
{
intro: "Welcome to your Portal! Here's how to navigate through this site."
},
{
element: document.querySelectorAll('#small-btn')[1],
intro: "Take a minute and fill out your Questionnaire. It will prepare you for your first day."
},
{
element: '#twitter',
intro: "Follow us on social media!",
position: 'top'
}
]
});
intro.start();
};
至于我的模态 window,我使用的是调出 md 对话框的 md 按钮:
<md-button id="small-btn" class=" btn1" ng-click="showAdvanced($event)" >
<md-tooltip md-direction="right">Questionnaire</md-tooltip>
<md-icon ng-if="!data.sysID" ng-style="{'background-color':'#F44336'}" class="circle-border md-60">assignment</md-icon>
<md-icon ng-if="data.sysID" ng-style="{'background-color':'#4CAF50'}" class="circle-border md-60">assignment_turned_in</md-icon>
</md-button>
有什么建议吗?
您可以使用 intro.js 中的 onbeforechange
事件(在此处记录:https://introjs.com/docs/intro/api/)在进入该步骤时打开模态,并在离开该步骤时关闭模态。
intro.onbeforechange(function(targetElement) {
if (angular.element(targetElement).attr("id") === "step3") {
$scope.openModal();
}
else {
$scope.closeDialog();
}
});
您必须小心,当您使用 setOptions
调用设置 introjs 对象时,您的步骤实际上存在于您的模板中。为此,您可以使用 md-dialog
演示 (https://material.angularjs.org/latest/demo/dialog) 中解释的 "Pre-rendered Dialog" 设置。这实质上意味着您的对话框存在于 DOM 中,无论模态是否实际显示。你这样打开它:
$mdDialog.show({
parent: angular.element(document.body);,
targetEvent: $event,
contentElement: "#modaldialog"
});
其中 #modaldialog
是一个 div 封装了你的 <md-dialog>
.
这里有一个例子 fiddle 展示了它是如何工作的:https://plnkr.co/edit/r3Sd2Ti8pKn33A9DJ7R0
我正在使用 introjs,我想知道是否有办法让它打开模态 window 并将其突出显示为导览的一部分。这在 JSON 对象中看起来如何?
目前,我有一个打开导览的按钮:
<md-button class="md-accent md-raised" ng-click="startIntro();"><i class="fa fa-play-circle" aria-hidden="true"></i> Take a Tour</md-button>
我的游览步骤是在客户端控制器的 JSON 对象中定义的:
$scope.startIntro = function(){
var intro = introJs();
intro.setOptions({
steps: [
{
intro: "Welcome to your Portal! Here's how to navigate through this site."
},
{
element: document.querySelectorAll('#small-btn')[1],
intro: "Take a minute and fill out your Questionnaire. It will prepare you for your first day."
},
{
element: '#twitter',
intro: "Follow us on social media!",
position: 'top'
}
]
});
intro.start();
};
至于我的模态 window,我使用的是调出 md 对话框的 md 按钮:
<md-button id="small-btn" class=" btn1" ng-click="showAdvanced($event)" >
<md-tooltip md-direction="right">Questionnaire</md-tooltip>
<md-icon ng-if="!data.sysID" ng-style="{'background-color':'#F44336'}" class="circle-border md-60">assignment</md-icon>
<md-icon ng-if="data.sysID" ng-style="{'background-color':'#4CAF50'}" class="circle-border md-60">assignment_turned_in</md-icon>
</md-button>
有什么建议吗?
您可以使用 intro.js 中的 onbeforechange
事件(在此处记录:https://introjs.com/docs/intro/api/)在进入该步骤时打开模态,并在离开该步骤时关闭模态。
intro.onbeforechange(function(targetElement) {
if (angular.element(targetElement).attr("id") === "step3") {
$scope.openModal();
}
else {
$scope.closeDialog();
}
});
您必须小心,当您使用 setOptions
调用设置 introjs 对象时,您的步骤实际上存在于您的模板中。为此,您可以使用 md-dialog
演示 (https://material.angularjs.org/latest/demo/dialog) 中解释的 "Pre-rendered Dialog" 设置。这实质上意味着您的对话框存在于 DOM 中,无论模态是否实际显示。你这样打开它:
$mdDialog.show({
parent: angular.element(document.body);,
targetEvent: $event,
contentElement: "#modaldialog"
});
其中 #modaldialog
是一个 div 封装了你的 <md-dialog>
.
这里有一个例子 fiddle 展示了它是如何工作的:https://plnkr.co/edit/r3Sd2Ti8pKn33A9DJ7R0