- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的应用程序中单击按钮打开模式弹出窗口。我尝试了很多例子,但我没能成功。
我收到此错误,但无法修复它。错误:[$injector:unpr] 未知提供程序:$mdDialogProvider <- $mdDialog <- ApplicationEtatController
这是我的 Controller :
(function () {
'use strict';
angular
.module('NomApplication')
.controller('ApplicationEtatController', ['$scope', '$mdDialog', ApplicationEtatController]);
ApplicationEtatController.$inject = ['$scope', '$mdDialog','Donnees'];
/**
* Constructeur du contrôleur d'état d'application.
* @param {array} Donnees Données.
* @returns {undefined}
*/
function ApplicationEtatController($scope, $mdDialog, Donnees) {
/* jshint validthis:true */
var vm = this;
vm.Donnees = Donnees;
vm.DonneesTemp = vm.Donnees;
vm.dynamicImgLocation = "../../Content/Images/favori_on.gif";
vm.filtreFavoris = "false";
vm.filterModeles = filterModeles;
vm.filteredLetters;
vm.filterByFavoris = filterByFavoris;
vm.filterBySujet = filterBySujet;
vm.filtreParSujet = 'false';
vm.filtreParFavori = 'false';
vm.gererFavori = gererFavori;
vm.init = init;
vm.languesModele = [
//{ langue: "En anglais et français", CodLang: "FA" },
{ langue: "En français", CodLang: "F" },
{ langue: "En anglais", CodLang: "A" }
];
vm.langueSelect = vm.languesModele[0];
vm.NbEnr = Donnees.length;
vm.nomImgFav = "";
vm.rechercherParTitre = rechercherParTitre;
vm.openModal = openModal;
vm.closeModal = closeModal;
vm.titreRecherche = "";
vm.tris = [
{ affichage: "Titre", valeur: "TxtTitremdlDoc" },
{ affichage: "Numéro", valeur: "NoRefreMdlDoc" }
]
vm.triSelect = vm.tris[0].valeur;
init();
filterModeles();
function filterModeles() {
//Filtrer par langue
var filtered = [];
vm.DonneesTemp = vm.Donnees;
if (vm.langueSelect.CodLang == "F") {
for (var i = 0; i < vm.DonneesTemp.length; i++) {
var mdlCourant = vm.DonneesTemp[i];
if (mdlCourant.CodLang.indexOf("F") >= 0) {
filtered.push(mdlCourant);
}
}
vm.DonneesTemp = filtered;
}
else if (vm.langueSelect.CodLang == "A") {
for (var i = 0; i < vm.DonneesTemp.length; i++) {
var mdlCourant = vm.DonneesTemp[i];
if (mdlCourant.CodLang.indexOf("A") >= 0) {
filtered.push(mdlCourant);
}
}
vm.DonneesTemp = filtered;
}
else {
vm.DonneesTemp = vm.Donnees;
}
//Filtrer par sujet
if (vm.filtreParSujet == "true") {
filtered = [];
if (vm.filteredLetters != null && vm.filteredLetters != "") {
for (var i = 0; i < vm.DonneesTemp.length; i++) {
var filteredMdl = vm.DonneesTemp[i];
for (var j = 0; j < filteredMdl.Sujets.length; j++) {
var filteredMdlSuj = filteredMdl.Sujets[j];
var nomLower = filteredMdlSuj.nom.toLowerCase();
if (nomLower.indexOf(vm.filteredLetters) >= 0) {
filtered.push(filteredMdl);
}
}
}
vm.DonneesTemp = filtered;
}
}
//Filtrer par favori
if (vm.filtreParFavori == "true") {
filtered = [];
for (var i = 0; i < vm.DonneesTemp.length; i++) {
if (vm.DonneesTemp[i].estFavori == 'true') {
filtered.push(vm.DonneesTemp[i]);
}
}
vm.DonneesTemp = filtered;
}
else {
//vm.DonneesTemp = vm.Donnees;
//vm.filterByLangue();
//vm.filterBySujet();
}
}
function filterByFavoris() {
var filtered = [];
if (vm.filtreParFavori == "true") {
vm.filtreParFavori = "false";
vm.dynamicImgLocation = "../../Content/Images/favori_off.gif"
}
else {
vm.filtreParFavori = "true";
vm.dynamicImgLocation = "../../Content/Images/favori_on.gif"
}
vm.filterModeles();
}
function filterBySujet() {
if (vm.filteredLetters != null && vm.filteredLetters != "") {
vm.filtreParSujet = "true";
}
else {
vm.filtreParSujet = "false";
}
vm.filterModeles();
}
function gererFavori(idModele) {
for (var i = 0; i < vm.DonneesTemp.length; i++) {
var mdlCourant = vm.DonneesTemp[i];
if (mdlCourant.id == idModele) {
if (mdlCourant.estFavori == 'true') {
mdlCourant.estFavori = 'false';
mdlCourant.dynamicImgLocation = "../../Content/Images/favori_off.gif"
}
else {
mdlCourant.estFavori = 'true';
mdlCourant.dynamicImgLocation = "../../Content/Images/favori_on.gif"
}
}
}
// $scope.$apply();
$window.location.reload();//$route.reload();
}
function init() {
var filtered = [];
for (var i = 0; i < vm.DonneesTemp.length; i++) {
var mdlCourant = vm.DonneesTemp[i];
if (mdlCourant.estFavori == "true") {
mdlCourant.dynamicImgLocation = "../../Content/Images/favori_on.gif"
filtered.push(mdlCourant);
}
else {
mdlCourant.dynamicImgLocation = "../../Content/Images/favori_off.gif"
filtered.push(mdlCourant);
}
}
vm.DonneesTemp = filtered;
}
function rechercherParTitre() {
var filtered = [];
filtered = [];
if (vm.titreRecherche != null && vm.titreRecherche != "") {
for (var i = 0; i < vm.DonneesTemp.length; i++) {
var filteredMdl = vm.DonneesTemp[i];
var nomLower = filteredMdl.TxtTitremdlDoc.toLowerCase();
if (nomLower.indexOf(vm.titreRecherche) >= 0) {
filtered.push(filteredMdl);
}
}
vm.DonneesTemp = filtered;
}
else {
vm.DonneesTemp = Donnees;
filterModeles();
}
}
function openModal() {
$mdDialog.show({
controller: 'ApplicationEtatController',
templateUrl: 'ModalFiltre.html',
clickOutsideToClose: false,
parent: angular.element(document.body),
targetEvent: event,
openFrom: { left: 1500 },
closeTo: { left: 1500 },
locals: { object: obj }
});
}
function closeModal(id) {
ModalService.Close(id);
}
}
}());
这是我的 html 文件:
<div class="panel panel-primary container-fluid">
<div class="row">
<div class="col-md-8" style="width:700px;padding-top:10px">
<input type="search" name="txtSearch" value="" ng-model="vm.titreRecherche" class="form-control" width="400" />
<a href="#" class="search-icon" ng-click="vm.rechercherParTitre()">
<i class="fa fa-search"></i>
</a>
</div>
<div class="col-md-4">
</div>
</div>
<div class="row">
<div class="col-md-12" style="padding-top:10px;width:1200px">
<select class="form-control" style="width:200px;display:inline-block;margin-right:50px" name="filter" id="filter" ng-model="vm.langueSelect" ng-options="langue.langue for langue in vm.languesModele" ng-change="vm.filterModeles()"></select>
<div style="width:350px;display:inline-block;">
<input placeholder="Filter par sujet" class="form-control" style="width:200px;display:inline-block" type="text" name="txtFilterBySujet" value="FA" ng-model="vm.filteredLetters" />
<input type="button" ng-click="vm.filterBySujet()" id="btnFiltreSUjet" value="Filtrer" style="width:70px;margin-right:50px;display:inline-block" />
</div>
<div style="width : 200px;display:inline-block">
<a href="#" ng-click="vm.filterByFavoris()" ng-model="filtered" class="aFav">
<img ng-src="../../Content/Images/favori_on.gif" alt="Filter par favoris" /> Favoris
</a>
</div>
<div>
<input type="button" name="btnModal" value="Modal" ng-click="vm.openModal()" />
</div>
</div>
</div>
<div class="row" style="padding-top:0px;margin-bottom:10px">
<div class="col-md-8" style="padding-bottom:0px;height:35px;padding-top:10px">
<p style="margin:0;vertical-align:middle">
{{vm.DonneesTemp.length}} {{vm.DonneesTemp.length == 1 ? "résultat" : "résultats"}}
</p>
</div>
<div class="col-md-2">
<select class="form-control" name="sltTri" ng-model="vm.triSelect" style="width:108px">
<option ng-repeat="tri in vm.tris" value="{{tri.valeur}}">{{tri.affichage}}</option>
</select>
</div>
<div class="col-md-2">
</div>
</div>
<div ng-init="vm.DonneesTemps" ng-repeat="Donnee in vm.DonneesTemp | orderBy : vm.triSelect " style="border:1px solid black;background-color:#ffffff ;width:500px; float:left; margin:0 0 25px 20px;padding: 0 0 0 15px;height:150px">
<div style="width:480px;display:inline-block;">
<div ng-switch="{{Donnee.TxtTitremdlDoc.length > 40}}">
<div ng-switch-when="true">
<h1 style="font-size:1.4em;margin:5px 0 0 0;width:430px;display:inline-block; float:left;" title="{{Donnee.TxtTitremdlDoc}}">{{Donnee.TxtTitremdlDoc | limitTo: 40}} ...</h1>
</div>
<div ng-switch-when="false">
<h1 style="font-size:1.4em;margin:5px 0 0 0;width:430px;display:inline-block; float:left;" title="{{Donnee.TxtTitremdlDoc}}">{{Donnee.TxtTitremdlDoc}}</h1>
</div>
</div>
<a href="#" style="width:40px;margin:0px;height:21px" ng-click="vm.gererFavori(Donnee.id)" ng->
<img ng-src="{{Donnee.dynamicImgLocation}}" alt="Alternate Text" style="vertical-align:top;display:inline-block;float:left" />
</a>
</div>
<h2 style="font-size:1.1em;margin:5px 0 0 0;">{{Donnee.NoRefreMdlDoc}}</h2>
<div ng-repeat="sujet in Donnee.Sujets" style="text-align: left; margin: 0px; display: inline-block;">
<span>{{sujet.nom}} {{$last ? '' : ($index==Sujets.length-2) ? ' and ' : ', '}}</span>
</div>
<div ng-switch="{{Donnee.DescMdlDoc.length > 50}}">
<br />
<div ng-switch-when="true">
<p>{{Donnee.DescMdlDoc | limitTo: 50}} ...</p>
</div>
<div ng-switch-when="false">
<p>{{Donnee.DescMdlDoc}}</p>
</div>
</div>
</div>
抱歉,我没能创建一个 plunker 项目。
感谢您的帮助。
最佳答案
$mdDialog
不是 AngularJS 的原生功能。它是 Angular-Material 库的一部分,因此请确保您已安装它(最简单的方法是使用 Bower 或其他包管理器)并将其包含在您的 Index.html 中文件:
index.html
//css file
<link rel="stylesheet" href="/bower_components/angular-material/angular-material.css" />
//js file
<script src="/bower_components/angular-animate/angular-animate.js"></script>
<script src="/bower_components/angular-aria/angular-aria.js"></script>
<script src="/bower_components/angular-messages/angular-messages.js"></script>
<script src="/bower_components/angular-material/angular-material.js"></script>
还要确保您已将其添加到核心模块中:
(function() {
'use strict';
angular
.module('myApp', [
'ngMaterial',
...
...
...
//You other injections
]);
})();
关于javascript - AngularJS - 在 Controller 中打开 $mdDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686227/
this.$mdDialog.show({ controllerAs: 'ctrl', resolve: { product: product }, c
我要关闭$mdDialog成功 promise 返回后。 我可以像下面的代码一样关闭 $mdDialog 但它不能满足我的这个目的 vm.$mdDialog.show({ controller
在关闭 $mdDialog 后,我试图通过使用他的点击事件来调用文件输入时遇到了一个奇怪的行为。 当我在不使用 $mdDialog 的情况下调用点击事件时,一切正常,但与对话框一起使用时,上传文件选择
我正在尝试将表单输入传递到我的对话框(例如作为标题)。问题是:它没有得到 $scope 的形式。 如果我设置 $scope sinde Controller ,它将正常显示(例如,参见 $scope.
我正在尝试将 Ng-repeat 传递给我的 $mdDialog 但没有找到太多有关如何执行此操作的文档。我一直指的是This Stack ,但我没有运气将图像传递给模态。 在控制台中我收到一条错误消
我目前正在尝试在我的一个单元测试中打开和关闭 Angular Material 2 对话框。打开看起来不错,但我监视了一个应该在关闭后调用的函数,但它从未被调用过,我认为这是因为对话框没有按我希望的那
所以我尝试使用 MdDialog 来显示错误消息。不幸的是,它不是以弹出窗口的形式出现,而是以页面底部的 block 形式出现。 我需要查看或更改什么才能使其正常工作? 下面的代码 common-mo
主列表页面有编辑按钮。这会打开已编辑行的详细信息。 Way-1:现在,如果我设置“ctrl.parent.q_details.client_location”,它会与父列表 Controller 绑定
我在应用程序中使用$ mdDialog,但想将其用作“确认”对话框而不是普通对话框。这意味着,在用户单击“确认”对话框中的两个按钮之一之前,不应继续执行代码流。我注意到可以使用$ mdDialog.c
我想在 mdDiaglog 的 .textcontent 中添加换行符。 以下是我的代码: var confirm = $mdDialog.confirm() .title('Refr
我使用完美运行的“locals”属性向我的 md-Dialog 发送了一些信息。 用户按下按钮后,他将通过 $resource 方法发送一些信息并获得响应。我需要在 md 对话框关闭后显示该响应。 如
如何在 $mdDialog 中添加表单以及提交时如何发送到电子邮件。我试图从对话框中获取信息,但找不到任何线索。 我的 Controller 是: App.controller('MainContro
通常,您可能会显示一个带有 Angular Material 的对话框,如下所示: $mdDialog.show({ controller: FooCtrl, templateUrl:
你好,我正在尝试将一个简单的 md 对话框外部区域的颜色从深色透明颜色更改为不同的颜色,它可以更暗或更亮,这可能吗?感谢您的帮助! 代码来自 https://material.angularjs.or
我正在尝试使用 $mdDialog 将值从 Controller 传递到服务。 var id 有值,但是当我转到 testService 时,该值不存在。 module.controller('vie
我使用模态选项卡,我有通知弹出窗口,当用户登录我的应用程序时,它总是显示给用户。它包含用户离线时发生的所有事件。问题是当我单击列表中的任何对象时,它会关闭我的弹出窗口并显示新的模式选项卡。 我想实现这
我目前有一个 $mdDialog,当它打开时是整页并且其中有一个表单。当用户单击取消时,$mdDialog 将通过调用此函数关闭 $mdDialog.cancel(); 但是,我还想在用户单击浏览器后
我想向我的 mdDialog 添加一个变量或函数。我不确定如何创建自定义 mdDialog,我是 angularjs 的新手。 这是我的 mdDialog: vm.dialog_up = functi
我有一个带有登录页面的 Angular 应用程序,该页面应该在处理请求时显示加载对话框。如果后端登录成功,就没有问题,我会被转到内容页面。不幸的是,如果登录失败,加载对话框永远不会隐藏。 这是我的代码
有没有办法让两个 mdDialog 框一个在另一个上面打开,或者一个来自在 Angular Material 设计实现中另一个内部触发的事件?我正在实现的当前场景是一个 mdDialog 在单击时打开
我是一名优秀的程序员,十分优秀!