gpt4 book ai didi

ruby - 我如何在 Volt 中执行 jQuery toggleClass?

转载 作者:数据小太阳 更新时间:2023-10-29 09:03:00 24 4
gpt4 key购买 nike

我正在玩弄 Volt目前正在尝试为我的 Volt 应用程序中的侧边栏做一个简单的 toggleClass(没有运气)。这是一个代码示例。

应用程序/main/views/main.html

<:Title>
{{ view main_path, "title", {controller_group: 'main'} }}

<:Body>

<div id="wrapper">
<div id="sidebar-wrapper">
<ul class="sidebar-nav">
<li><a href="#">blah</a></li>
<li><a href="#">blah</a></li>
<li><a href="#">blah</a></li>
...
</ul>
</div>

<div id="page-content-wrapper">
<div class="container-fluid">
<div class="btn btn-default sidebar-toggler">Toggle Sidebar</div>
<:volt:notices />
{{ view main_path, 'body', {controller_group: 'main'} }}
</div>
</div>
</div>

应用程序/main/assets/js/sidebar.js

$(document).ready(function() {
$(".sidebar-toggler").click(function(e) {
e.preventDefault();
$("#wrapper").toggleClass("toggled");
});
});

当点击 div.sidebar-toggler 时,一个 toggled 类应该被添加到 div#wrapper ... 它没有,也许还有另一种方法可以用 Volt 做到这一点。

上面的代码不工作。执行此操作的好的 Volt 方法是什么?

最佳答案

在 volt 中,您通常会在 Controller 上将切换状态设置为“reactive accessors”,然后使用绑定(bind)来更新类状态。由于 Controller 是绑定(bind)的上下文,我们可以在 if 绑定(bind)中检查 reactive_accessor 的状态。

在 Controller 中:

module Main
class MainController < Volt::ModelController
reactive_accessor :toggled

def toggle_sidebar
self.toggled = !toggled
end
....

在 View 中:

...
<div class="btn btn-default sidebar-toggler {{ if toggled }}toggled{{ end }}" e-click="toggle_sidebar">Toggle Sidebar</div>
...

当我们调用 self.toggled = 方法时,它会更改状态并使用该数据 react 性地更新任何绑定(bind)。 e-click 调用 Controller 上的 toggle_sidebar 方法。 Volt 常用的简单方法是将 if 直接放入 View 中。我们还可以将它放入一个返回字符串并绑定(bind)到该字符串的方法中。

def toggled_class
toggled ? 'toggled' : ''
end

....

<div class="btn btn-default sidebar-toggler {{ toggled_class }}" e-click="toggle_sidebar">Toggle Sidebar</div>

希望这对您有所帮助,如果您需要,我可以澄清更多。

关于ruby - 我如何在 Volt 中执行 jQuery toggleClass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com