10

我在电子应用程序中使用 angularjs (1.x) 和 angular-material。我的视图中有两个md-selects,当我尝试在 Windows 中使用它时,一切正常。但是当我在 OS X 中使用它时,md-select第一次单击后停止工作。我单击它并打开项目列表,但如果我md-select再次单击它,它不再显示项目列表。值得注意的是,如果我点击第一个md-select,第二个md-select也会停止工作。

检查 html,我可以看到,md-select有两个子元素:md-select-valuediv(md-select-menu-container). 在我单击并选择任何项目后,md-select-menu-container消失。也许它与问题有关,但第二个md-select仍然有一个md-select-menu-container,我无法打开它。

甚至尝试了一个md-select没有任何选项的简单方法,但它仍然只在第一次点击时打开。

<md-select ng-model="vm.test">
</md-select>

任何人都知道为什么会这样?

我会把我的代码放在这里,但我认为这个错误在我项目的其他地方。因为如果我md-select在 angular material 的演示页面中尝试 s,它会按预期工作。

我的项目在github,所以任何人都可以尝试: https ://github.com/jradesenv/controle-projeto

更新:

我用 nodejs express 创建了一个简单的服务器来托管 angular 应用程序,它可以在 chrome 和 safari 上完美运行。这似乎是一个只有电子的错误。我注意到它不仅是 md-selects,而且 md-dialogs 和 md-toast 也有一些奇怪的延迟来打开和关闭,只在电子中运行。

谢谢!

4

1 回答 1

0

我使用 angular material 1.1.5 出现此错误。当我将其降级到 1.1.0 时,我可以看到 mdSelects 按预期工作,但仍然有一些其他错误,例如 mdDialog 关闭延迟、更改选项卡延迟等。这是角度材料动画的错误。

对于有此问题的任何人,我仍在使用 angular-material 1.1.5 ,但我仅在 Safari 中禁用了所有动画,现在它按预期工作。

我正在使用此代码注入特定的 css 文件和引导 angularjs,并在特定的 css 文件中禁用所有动画:

function boot() {
    if (/Safari/.test(navigator.userAgent)) {
        var head = document.head,
        style = document.createElement('link');

        style.type = 'text/css';
        style.rel = 'stylesheet';
        style.href = 'styles/disable-animations.css';

        head.appendChild(style);
    }

    window.onload = function () {
        angular.bootstrap(document, ['app']);
    };
}

//styles/disable-animations.css 文件

* {
transition: none!important;
transition-duration: 0ms!important;
transition-delay: 0ms!important;
}
于 2017-10-14T16:51:40.010 回答