我正在测试2个示例项目,一个是快速的,另一个是塔式.js
我只是想在页面渲染的开头将正确的css类放在活动页面的li上。
例如:
我在页面/信息中,我想在第一个li
上添加活动类
我使用的模板引擎是Coffekup / Jade
我试图获取url路径并与href进行比较,通过当地人传递......但我认为这不是通过当地人传递的好方法..
有更好的解决方案吗?
感谢。
答案 0 :(得分:0)
这个答案适用于towerjs和coffeekup。我没有足够的经验和快递和玉说什么。
在coffeekup中,将诸如css类之类的属性放在html标记上的正确方法是使用哈希,即attributeName: atrributeValue
。一个例子,来自处理主要布局的tower.js模板,它位于app/views/layouts/application.coffee
中:
nav id: "navigation", class: "navbar", role: "navigation", ->
div class: "navbar-inner", ->
div class: "container", ->
partial "shared/navigation"
请注意,这里我们有三层标签,一个带嵌套在其中的div的导航,另一个嵌套在那个内部的div,后面是要在其中渲染的内容。它可以像文本一样容易,而不是局部的。
所以,在你的情况下,你进入app/views/info
并找到你想要上课的li的正确模板,那么它就是
li class: "active", ->
现在,如果你正在谈论在已经被动态渲染的情况下更改li上的css类,你需要从客户端代码执行此操作,并且你可以像使用coffeescript一样会在普通的html页面中使用javascript。
如果你正在尝试学习塔和coffeekup(现在实际上是咖啡杯),我真的推荐https://github.com/mark-hahn/coffeekup-intro。您可以在不到半小时的时间内完成它,并对咖啡杯有一个很好的理解。如果您想查看有解释的Towerjs应用程序示例,可以在此处查看我的demoApp:https://github.com/edubkendo/demoApp。
编辑:现在回答我理解的问题:
首先,在config/assets.coffee
中,在第一个块中添加"/app/client/controllers/applicationController"
,如下所示:
module.exports =
javascripts:
application: [
"/app/client/config/application"
"/config/routes"
"/app/views/templates"
"/app/models/user"
"/app/client/controllers/usersController"
"/app/models/post"
"/app/client/controllers/postsController"
"/app/client/controllers/applicationController"
]
然后,在您的客户端控制器中,app/client/controllers/applicationController.coffee
:
class App.ApplicationController extends Tower.Controller
pathname = window.location.pathname
pathRegExp = new RegExp(pathname.replace(/\/$/,'') + "$")
$('.navbar a').each(->
if (pathRegExp.test @href.replace(/\/$/,''))
$(@).addClass('active')
)
现在,这将把活动类添加到当前活动的链接。