$materialDialog
是Angular Material Design个组件。
但是如何使用该组件?为什么它不返回像angular-ui bootstrap这样的东西?如何审判承诺或结果或其他任何东西,只关闭模态?
这是一个简短的例子:
var test = $materialDialog({
templateUrl: '/Assets/app/azured/partials/dialog.html',
targetEvent: event,
resolve:{
item: function () {
return item;
}
},
appendTo: angular.element.find('dialog'),
controller: ['$scope', '$hideDialog', 'item', function ($scope, $hideDialog, item) {
$scope.name = item.Name;
$scope.cancel = function () {
$hideDialog();
}
$scope.ok = function () {
scope.name = '';
$hideDialog();
};
}]
});
test.then(function (x) {
console.log(x); //this prints destroyDialog function why?
});
我们在哪里知道用户按下了什么?我应该在$ materialDialog中实现自定义逻辑吗?在那种情况下,我发现它很奇怪。 问题发生在github 237
答案 0 :(得分:4)
这是一篇博文,展示了一种更清洁的方法,包括一个Plunker。
http://angularauthority.com/2015/04/28/creating-a-material-design-modal-service/
答案 1 :(得分:2)
像这样解决
function DeleteItem(_list, _item) {
azuredBlade.Load('listId');
Api.Delete(_list, _item).then(function (x) {
if (x) {
azuredBlade.Deload('listId');
Refresher();
}
});
}
function Dialog(event, item, tableName) {
$materialDialog({
templateUrl: '/Assets/app/azured/partials/dialog.html',
targetEvent: event,
resolve: {
item: function () {
return item;
},
tableName: function () {
return tableName;
},
fn: function () {
return DeleteItem;
}
},
appendTo: angular.element.find('dialog'),
controller: function ($scope, item, tableName, $hideDialog, fn) {
$scope.name = item.Name;
$scope.cancel = function () {
$hideDialog();
}
$scope.ok = function () {
fn(tableName, item);
$hideDialog();
};
}
});
}
因此逻辑超出$ materialDialog并在fn resolve