我正在使用Materialise CSS和Angular-materialize指令:
http://materializecss.com/modals.html
http://krescruz.github.io/angular-materialize/#modals
我正在尝试执行以下操作
我有以下按钮
<a href="#MyModal" modal class="my-modal-trigger waves-effect waves-green btn right"Show Data/a>
和模态
<div id="MyModal" class="modal">
<div class="modal-content center">
<div class="row">
<div class="row left">
<div class="card blue-grey darken-1">
<div class="card-content white-text">
<span class="card-title">Data</span>
</div>
<div>
<ul class="collection">
//loop the data
</ul>
</div>
</div>
<a class="modal-action modal-close waves-effect waves-green btn">Close</a>
</div>
</div>
</div>
</div>
我的JS中有以下内容
var app = angular.module("MyApp", ['ngRoute', 'ui.materialize']);
如何调用控制器方法弹出模态并用我的控制器
填充数据app.controller('mainController', function ($scope, $location, $http, AppConfig) {
var params = { some stuff}
$http({
method: 'POST',
url: myURL,
headers: {
'Content-Type': 'text/html',
'Accept': 'application/json'
},
params: params
})
.success(function (data) {
//pop up the modal and show the data
Materialize.toast('Awesome, we got the data', 4000);
})
.error(function (status) {
Materialize.toast('Bad stuff happened', 4000);
});
});
答案 0 :(得分:2)
Angular-materialize允许您在触发器中设置选项open
。使用它来指定一个变量,当为true时,将启动模态。最初在控制器中将其设置为false。
使用ng-click
调用控制器中的一个函数,该函数从API获取数据,然后在成功时将open
变量设置为true。
触发:
<a href="#MyModal" class="btn" modal open="openModal"
ng-click="getDataOpenModal()">Show Data</a>
在控制器中:
$scope.openModal = false;
$scope.getDataOpenModal = function() {
$http({
method: 'POST',
url: '/myUrl',
headers: {
'Content-Type': 'text/html',
'Accept': 'application/json'
},
params: params
})
.success(function(data) {
$scope.data = data;
$scope.openModal = true;
Materialize.toast('Awesome, we got the data', 4000);
})
.error(function(status) {
Materialize.toast('Bad stuff happened', 4000);
});
}
编辑:您可以在触发器中设置其他两个选项,ready
和complete
HTML
<a href="#MyModal" class="btn" modal open="openModal"
ready="readyCallback()" complete="completeCallback()"
ng-click="getDataOpenModal()">Show Data</a>
JS
$scope.readyCallback = function() {
Materialize.toast("Modal ready", 4000);
}
$scope.completeCallback = function() {
Materialize.toast("Modal complete", 4000);
}
答案 1 :(得分:0)
在$scope.$apply()
$scope.openModal = true;
为我工作
答案 2 :(得分:0)
我也在为此而斗争,但是没有解决方案对我有用。我不得不改变html的一面。
我的html:
<a href="" data-target='log_detail' modal ng-click="get_info_log()"><i class="zmdi zmdi-eye"></i></a>
在控制器中:
$scope.openModal = false
$scope.get_info_log = function(){
$scope.openModal = true;
}
数据目标应与您的模式ID相匹配:
!-- Modal Structure-->
<div id="log_detail" class="modal modal-fixed-footer setup-modal">
<div class="modal-content">
</div>
</div>
<div class="modal-footer">
<a class=" modal-action modal-close waves-effect waves-light btn">Close</a>
</div>
</div>