Materializecss 下拉菜单不适用于 AngularJS
Materializecss dropdown menu not working with AngularJS
我正在开发一个使用 Materializecss 和 AngularJS 作为前端的 Web 应用程序,我的问题是 Materialize 的下拉菜单组件对我不起作用。
这是他们网站上的示例下拉菜单
$( document ).ready(function(){
$(".dropdown-button").dropdown();
});
<!-- Dropdown Structure -->
<ul id="dropdown1" class="dropdown-content">
<li><a href="#!">one</a></li>
<li><a href="#!">two</a></li>
<li class="divider"></li>
<li><a href="#!">three</a></li>
</ul>
<nav>
<div class="nav-wrapper">
<a href="#!" class="brand-logo">Logo</a>
<ul class="right hide-on-med-and-down">
<li><a href="sass.html">Sass</a></li>
<li><a href="components.html">Components</a></li>
<!-- Dropdown Trigger -->
<li><a class="dropdown-button" href="#!" data-activates="dropdown1">Dropdown<i class="mdi-navigation-arrow-drop-down right"></i></a></li>
</ul>
</div>
</nav>
在他们的网站上它确实有效,但在我的网站上它不起作用,我猜它必须对下拉按钮的 href="#!"
部分做一些事情,因为也许 AngularJS 正在尝试地图路线什么的
如果这是问题所在,那么我怎样才能让 AngularJS 忽略一些 href?因为为了做下拉菜单和模式,我需要那些 href="#!"
,如果没有,问题是什么,我该如何解决?
我尝试删除 href 或使用 href=""
更改它,但没有用。
小心混合框架,它可以而且可能会产生意想不到的效果。至于显示和隐藏元素,这里有一个简单的例子来说明如何隐藏、显示或切换任何元素。
(demo)
HTML
<a href="javascript:void()" data-show="hidden">Show</a>
<a href="javascript:void()" data-hide="hidden">Hide</a>
<a href="javascript:void()" data-toggle="hidden">Toggle</a>
<div id="hidden"><!-- This can be any type of element -->
<!-- Anything in here -->
</div>
CSS
#hidden {
display: none;
}
JavaScript
$("[data-show]").on("click", function () {
$("#" + $(this).attr("data-show")).css("display", "initial");
});
$("[data-hide]").on("click", function () {
$("#" + $(this).attr("data-hide")).css("display", "none");
});
$("[data-toggle]").on("click", function () {
var target = $("#" + $(this).attr("data-toggle"));
if (target.css("display") === "none") {
target.css("display", "initial");
} else {
target.css("display", "none");
}
});
我在这里使用了 jQuery,因为您在脚本中使用了 jQuery,这也可以在纯 JavaScript 中轻松完成。确保将 JavaScript 放在 DOM 之后,否则将脚本包装在 document.onload
处理程序中。
我最近 运行 遇到了类似的情况。我还使用 Materializecss 和 AngularJS。
这是我在 CodePen 上的解决方案:http://codepen.io/omt66/pen/pyeQoy
我基本上保留了上面的样本,只是做了一些小改动。
以下显示了 AngularJS 部分的代码片段。
请查看示例中的笔设置,并将外部 JS 文件包含在您的项目中。这些基本上是 jQuery、Materialise、Angular 库。
var app = angular.module("app", []);
app.controller("MainCtrl", function($scope) {
console.log("In Angular MainCtrl");
$scope.items = [
{text: "Bing", url: "http://bing.com"},
{text: "ZDNet", url: "http://zdnet.com"},
{text: "CNet", url: "http://cnet.com"}
];
$('.dropdown-button').dropdown({
belowOrigin: true,
alignment: 'left',
inDuration: 200,
outDuration: 150,
constrain_width: true,
hover: false,
gutter: 1
});
});
我正在开发一个使用 Materializecss 和 AngularJS 作为前端的 Web 应用程序,我的问题是 Materialize 的下拉菜单组件对我不起作用。
这是他们网站上的示例下拉菜单
$( document ).ready(function(){
$(".dropdown-button").dropdown();
});
<!-- Dropdown Structure -->
<ul id="dropdown1" class="dropdown-content">
<li><a href="#!">one</a></li>
<li><a href="#!">two</a></li>
<li class="divider"></li>
<li><a href="#!">three</a></li>
</ul>
<nav>
<div class="nav-wrapper">
<a href="#!" class="brand-logo">Logo</a>
<ul class="right hide-on-med-and-down">
<li><a href="sass.html">Sass</a></li>
<li><a href="components.html">Components</a></li>
<!-- Dropdown Trigger -->
<li><a class="dropdown-button" href="#!" data-activates="dropdown1">Dropdown<i class="mdi-navigation-arrow-drop-down right"></i></a></li>
</ul>
</div>
</nav>
在他们的网站上它确实有效,但在我的网站上它不起作用,我猜它必须对下拉按钮的 href="#!"
部分做一些事情,因为也许 AngularJS 正在尝试地图路线什么的
如果这是问题所在,那么我怎样才能让 AngularJS 忽略一些 href?因为为了做下拉菜单和模式,我需要那些 href="#!"
,如果没有,问题是什么,我该如何解决?
我尝试删除 href 或使用 href=""
更改它,但没有用。
小心混合框架,它可以而且可能会产生意想不到的效果。至于显示和隐藏元素,这里有一个简单的例子来说明如何隐藏、显示或切换任何元素。
(demo)
HTML
<a href="javascript:void()" data-show="hidden">Show</a>
<a href="javascript:void()" data-hide="hidden">Hide</a>
<a href="javascript:void()" data-toggle="hidden">Toggle</a>
<div id="hidden"><!-- This can be any type of element -->
<!-- Anything in here -->
</div>
CSS
#hidden {
display: none;
}
JavaScript
$("[data-show]").on("click", function () {
$("#" + $(this).attr("data-show")).css("display", "initial");
});
$("[data-hide]").on("click", function () {
$("#" + $(this).attr("data-hide")).css("display", "none");
});
$("[data-toggle]").on("click", function () {
var target = $("#" + $(this).attr("data-toggle"));
if (target.css("display") === "none") {
target.css("display", "initial");
} else {
target.css("display", "none");
}
});
我在这里使用了 jQuery,因为您在脚本中使用了 jQuery,这也可以在纯 JavaScript 中轻松完成。确保将 JavaScript 放在 DOM 之后,否则将脚本包装在 document.onload
处理程序中。
我最近 运行 遇到了类似的情况。我还使用 Materializecss 和 AngularJS。
这是我在 CodePen 上的解决方案:http://codepen.io/omt66/pen/pyeQoy
我基本上保留了上面的样本,只是做了一些小改动。 以下显示了 AngularJS 部分的代码片段。
请查看示例中的笔设置,并将外部 JS 文件包含在您的项目中。这些基本上是 jQuery、Materialise、Angular 库。
var app = angular.module("app", []);
app.controller("MainCtrl", function($scope) {
console.log("In Angular MainCtrl");
$scope.items = [
{text: "Bing", url: "http://bing.com"},
{text: "ZDNet", url: "http://zdnet.com"},
{text: "CNet", url: "http://cnet.com"}
];
$('.dropdown-button').dropdown({
belowOrigin: true,
alignment: 'left',
inDuration: 200,
outDuration: 150,
constrain_width: true,
hover: false,
gutter: 1
});
});