我正在使用同位素过滤我网页上的不同内容。现在我在umbraco有一个展示页面,我有两个数据类型叫images
和videos
在我使用同位素过滤内容的其他页面上,我使用页面类型来执行此操作:
$('#filterNews').click(function () {
$('.isotope').isotope({ filter: '.NewsItem', layoutMode: 'masonry' });
$('.newsfilters .btn').removeClass('active');
$(this).addClass('active');
return false;
});
但是,我需要修改上面的内容,以便它在页面上查找数据类型。我尝试了以下内容:
$('#filterNews').click(function () {
$('.isotope').isotope({ filter: '@CurrentPage.Images', layoutMode: 'masonry' });
$('.newsfilters .btn').removeClass('active');
$(this).addClass('active');
return false;
});
我收到以下错误:
未捕获错误:语法错误,无法识别的表达式:@ CurrentPage.Images
我甚至试图从Umbraco获取实际的内容类型,但是却出现了非法的语法错误。
有没有办法可以修改我的javascript,以便找到我正在使用的正确数据类型,而不是页面类型?
答案 0 :(得分:0)
你在这里得到的错误是因为@ CurrentPage.Images是razor脚本,服务器在渲染页面时试图运行该脚本。如果属性"图像"在当前页面上没有定义,这将失败(这是你在这里看到的)。
你在这里做的事情也不是你认为你在做什么。同位素脚本是运行于客户端的javascript,因此它不能像你在这里编写的那样使用razor serverside-script。
听起来像同位素中的过滤器需要过滤类名,这意味着您必须查看实际输出图像和视频的模板代码。在没有看到你的模板的情况下,我无法真正告诉你它是哪一部分,除了它很可能是一个带有“foreach”的东西。或者是' for'循环,写出你的图像和视频元素。在这个循环中你必须修改它以添加一类'视频'或'图像'输出相应的元素,然后您就可以使用' .video'和' .image'在同位素的过滤属性中。