Angular Material $ mdPanel没有close()方法

时间:2017-03-16 16:44:27

标签: javascript angularjs angular-material

我正在使用角度材质$ mdPanel,我可以使用open()方法显示它但我无法将其删除(使用关闭按钮,如演示)。文档不清楚,close方法不起作用。对此有什么解决方案吗?

$mdPanel documentation

3 个答案:

答案 0 :(得分:1)

当你致电$mdPanel.open()时,它会返回一个承诺。对promise的调用包含对创建的面板的引用。你可以打电话给close()

$res = $mdPanel.open(...);
$res.then(function(ref) {
    $scope.ref = ref;
})

稍后,要关闭,请致电:

$scope.ref.close();

答案 1 :(得分:0)

close()上没有$mdPanel方法,它是面板引用上的一个方法,它在第一个参数上传递给该面板的控制器。因此,为了能够关闭面板,您需要在面板定义中传递控制器功能,类似于下面的内容。

希望这有帮助!

var config = {
    ...,
    controller: PanelController,
    controllerAs: 'panelCtrl',
    template: '<div><div>Some content</div><button ng-click="panelCtrl.close()">Close</button></div>',
    ...
};

function PanelController(panelRef) {
    this.close = function () {
        panelRef && panelRef.close();
    };
}

答案 2 :(得分:0)

您可以在控制器中注入mdPanelRef,然后拨打mdPanelRef.close()

var config = {
    ...,
    controller: PanelController

};

function PanelController(mdPanelRef) {
    this.close = function () {
        mdPanelRef.close();
    };
}