在 Telescope 应用程序中突出显示默认视图
Highlighting default view in Telescope app
当您在管理设置中设置默认视图,并且选中多个视图以供用户切换时,默认视图不会突出显示为 "active"。
为了实现这一点,在早期版本的 Telescope 中(在 RefactorScope 之前)我修改了文件 client/components/menu/menu_component.js
添加了这个(我有 TOP 作为我的默认视图,所以我可耻地硬编码了它):
if (currentPath === "/" && getRoute(this) === "/top") {
itemClass += " item-active"
}
我明白,编辑 Telescope 源文件不是明智之举,但这是最快、最简单的解决方案。
现在,在大型 Telescope 重构之后,我想以正确的方式进行。
但最终的问题是,这样做的正确方法是什么?
在对 Telescope 源进行一些挖掘之后,我得出了这个解决方案:
在您的自定义包中创建一个名为 custom_view_menu.js
的文件,内容如下:
getRoute = function (item) {
// if route is a Function return its result, else apply Router.path() to it
return typeof item.route == "function" ? item.route() : Router.path(item.route);
}
Template.menuItem.helpers({
itemClass: function () {
var itemClass = "";
var currentPath = Router.current().location.get().path;
if (this.adminOnly) {
itemClass += " item-admin";
}
if (getRoute(this) === currentPath || getRoute(this) === Meteor.absoluteUrl() + currentPath.substr(1)) {
// substr(1) is to avoid having two "/" in the URL
itemClass += " item-active";
}
if (this.label === Settings.get("defaultView") && currentPath === "/") {
itemClass += " item-active";
}
if (this.itemClass) {
itemClass += " "+this.itemClass;
}
return itemClass;
}
});
这是从原始来源 (https://github.com/TelescopeJS/Telescope/blob/master/packages/telescope-core/lib/client/templates/menu/menu_component.js) 复制的要点,添加了以下片段:
if (this.label === Settings.get("defaultView") && currentPath === "/") {
itemClass += " item-active";
}
我希望它能对某人有所帮助,而且我不是唯一一个尝试这样做的人:)
当您在管理设置中设置默认视图,并且选中多个视图以供用户切换时,默认视图不会突出显示为 "active"。
为了实现这一点,在早期版本的 Telescope 中(在 RefactorScope 之前)我修改了文件 client/components/menu/menu_component.js
添加了这个(我有 TOP 作为我的默认视图,所以我可耻地硬编码了它):
if (currentPath === "/" && getRoute(this) === "/top") {
itemClass += " item-active"
}
我明白,编辑 Telescope 源文件不是明智之举,但这是最快、最简单的解决方案。 现在,在大型 Telescope 重构之后,我想以正确的方式进行。
但最终的问题是,这样做的正确方法是什么?
在对 Telescope 源进行一些挖掘之后,我得出了这个解决方案:
在您的自定义包中创建一个名为 custom_view_menu.js
的文件,内容如下:
getRoute = function (item) {
// if route is a Function return its result, else apply Router.path() to it
return typeof item.route == "function" ? item.route() : Router.path(item.route);
}
Template.menuItem.helpers({
itemClass: function () {
var itemClass = "";
var currentPath = Router.current().location.get().path;
if (this.adminOnly) {
itemClass += " item-admin";
}
if (getRoute(this) === currentPath || getRoute(this) === Meteor.absoluteUrl() + currentPath.substr(1)) {
// substr(1) is to avoid having two "/" in the URL
itemClass += " item-active";
}
if (this.label === Settings.get("defaultView") && currentPath === "/") {
itemClass += " item-active";
}
if (this.itemClass) {
itemClass += " "+this.itemClass;
}
return itemClass;
}
});
这是从原始来源 (https://github.com/TelescopeJS/Telescope/blob/master/packages/telescope-core/lib/client/templates/menu/menu_component.js) 复制的要点,添加了以下片段:
if (this.label === Settings.get("defaultView") && currentPath === "/") {
itemClass += " item-active";
}
我希望它能对某人有所帮助,而且我不是唯一一个尝试这样做的人:)