在chrome扩展中使用meteor

是否可以以todos应用程序(来自meteor示例)为例,将其作为chrome扩展加载? 这意味着扩展将在我的meteor web应用程序上显示待办事项列表?您可以使用扩展加载网页,是的 如果您想做一些更自然的事情,您必须以某种方式导入数据。您可以创建一个为todo列表输出JSON的页面,并从扩展中处理该页面。加载该页面意味着从iframe调用它?如果不是,你能解释一下你的意思吗?导入数据意味着我也必须以某种方式导出数据,这意味着我必须为与我的应用程序的整个通信构建某种包装——这有点失去mete

如何将'moment.js'与Meteor一起使用?

我想和meteor一起使用momentjs。这是一个npm包,所以据我所知,它不能与meteor一起使用,因为meteor使用它自己的包系统。下面是我的问题: 有人知道如何将momentjs与meteor结合使用吗 有没有办法将npm包与meteor一起使用 2017年编辑:从Meteor 1.4+开始,npm包管理允许标准导入npm模块和命名导入大气模块。对于独立的js库,如moment.js、validate.js、underline.string.js等,您只需将源文件放入lib文件夹

Meteor-如何反应性地呈现数组而不是游标(例如,fetch()而不是find()的结果)

我有一个Meteor项目集合,我需要根据对MongoDB/minimongo查询来说过于复杂的规则进行搜索/排序/排序 例如,考虑一个搜索算法,该算法以相关性的顺序返回结果,但在客户端上运行以获得速度。 为了呈现项目,我调用MyCollection.find().fetch(),对结果进行排序并将其传递给模板 这意味着,每当搜索结果中的某个项目发生更改,或添加/删除某个项目时,搜索结果中的所有项目都将重新呈现 当只有一个项目被更改/添加/删除时,是否有办法防止所有项目被重新呈现?我认为如果您将“

SMTP中继的Meteor MAIL_URL语法

关于电子邮件包,是否可以发送到不使用SMTP身份验证的SMTP邮件中继,如果可以,我对邮件URL使用什么语法 例如: 如果用户名:未包含密码,则为“错误语法”: smtp://mail.server.com:25/ 如果给定假值,“身份验证失败”: smtp://nobody@mail.server.com:25/ smtp://nobody:nopasswd@mail.server.com:25/ 谢谢

如何在Meteor中进行基于参数的发布并删除旧的订阅文档?

我想在Meteor中实现一个基于参数的发布,但我遇到了一些问题 这是我的 当用户键入订阅发布并传递输入值的keyup事件时 'keyup#customerSearch':函数(事件、模板){ var关键字=template.find('#customerSearch').value; 如果(关键字){ 如果(关键字长度>=3){ Meteor.subscribe('sessioncustomers',关键字); } } } 发布使用此关键字返回记录 Meteor.publish(“sessio

Meteor 有没有办法检查特定的模板对象是否准备就绪?

我正在尝试使用Template.list.my\u playlist\u id变量调用subscribe,如下所示: Meteor.subscribe("links", Template.list.my_playlist_id); 问题是,在我使用my_playlist_id订阅之前,我需要确保它存在,是否存在可以等待的事件,如Template.list.my_playlist_id.ready 谢谢我不认为您希望使用模板变量本身,而是依次使用它的设置。如果我正确理解了您的上下文,那么您可能想

meteor上已部署应用程序,但控制台出错

我在meteor上部署了一个项目 但是,我在控制台中查看时出现以下错误: 未捕获的错误:哦,不!找不到路径的路由:/ 我在localhost上尝试了调试模式和-production server,它工作正常 但部署后不在流星上 我真的不知道在哪里可以看得更远。你能显示你的/route?路由器的代码吗;Router.mapfunction{this.route'indexify',{path:'/',template'indexify'};this.route'elements',{path:'/

如何正确地将外部登录服务合并到Meteor?

我想用Meteor添加Facebook、Twitter和Google登录服务。这样做似乎很容易,但我迷路的地方是自定义用户文档,使其与标准用户帐户内联。例如,使用FB,它将所有配置文件字段存储在服务中: 我知道我应该使用Accounts.onCreateUser()在将用户文档保存到数据库之前对其进行规范化,但我缺少一个好的示例。我在这里看到了github: 但我抓不住它。例如,如果我有Facebook、Twitter和Google,在我的服务器端onCreateUser函数中: 如何让所有服

meteor应用程序与datatables如何启用行选择

我正在向我的meteor应用程序添加数据表。 我以前从未使用过数据表库。我想知道指定选项以允许选择表行的语法。另外,了解如何响应行选择事件并捕获选择的行也很好,这样我就可以在我的应用程序逻辑中使用该行数据了。我在作者的网站上找到了答案:

如何将Meteor嵌入另一个页面?

如果你想提供一个“嵌入代码”给另一个人,这样他们就可以在自己的网页/cms等中嵌入meteor小部件。一个选择是做一个iframe,但这对混搭东西来说不太友好。因此,理想情况下我需要它,这样我就可以将HTML呈现到宿主页面的DOM中 举个例子,想象一下,如果你在meteor中编写了一个聊天应用程序,并希望人们能够将其嵌入到自己的页面中。该页面上可能还有聊天以外的其他内容,事实上聊天流星服务器与提供主机页面的服务器完全不同 有什么好办法吗?如果你没有在iframe中运行,那么你会遇到跨域问题:即使

Meteor.js+;iron router:我应该使用哪个版本以及如何安装?

因此,iron router github页面说: 最新版本:0.8.2 重要提示:请勿从大气中安装0.9.0或0.9.1版。 这些版本是为新的流星包装系统 在Meteor v0.9.0中提供。错误地发布了iron router 0.9.x 到大气中去 当我在我的项目目录中运行meteor list时,我得到以下信息: standard-app-packages 1.0.1 Moved to meteor-platform iron:router 0.9.3 Rout

Meteor ';渲染';流星中不发射的事件

我试图在meteor模板中的字段上使用JQuery的自动完成功能。据我所知,应该通过将模板的“呈现”事件挂接到调用JQ的$(someElement).autocomplete()函数的处理程序来实现这一点。当我尝试此操作时,什么也没有发生,据我所知,模板的“呈现”事件的事件处理程序从未运行过 以下是模板: <template name="loginOrWelcome"> {{#if isLoggedIn}} <p>You are logged in as {{

在meteor服务器上部署meteor应用程序thorws iron路由错误

我发现了一些类似的问题,但没有一个明确的答案。我有一个简单的流星应用程序。在本地一切正常,但当我在meteor服务器上部署应用程序时,我遇到了一个铁:路由器错误。奇怪的是,当我以--debug模式部署应用程序时,效果很好。 这是模板 <template name="navigationBar"> </template> <template name="homepage"> {{> navigationBar}} <div>

Meteor在重置密码电子邮件中更改发件人信息

当您保留帐户密码电子邮件模板时,它将重置密码电子邮件的发件人显示为Meteor帐户 当我试图这样改变它的时候 Accounts.emailTemplates.from = "Myself <me@myself.com>"; Accounts.emailTemplates.from=“我自己”; 然后电子邮件就再也发不出去了。有人知道更改此地址的正确方法吗?您的SMTP提供商是否允许您从该地址发送电子邮件 如果您使用meteor.com的默认SMPT服务运行,出于安全原因,我怀疑他

Meteor cfs s3上传的工作原理

我以前使用过slingshot,这个过程非常简单:我们上传图像,它返回s3 bucket上传的url 现在我想调整图像大小,需要对图像执行一些操作,因此我切换到cfs:s3包。但是,当我尝试上载图像时,它会返回一些没有url的记录,并将其存储在数据库中: { "_id" : "Rwa7Xo65pv6cAP2aY", "copies" : { "thumbs" : { "name" : "306032-facebook.jpg",

在MeteorJS中建模深度嵌套集合的最佳实践

我问的是我应该和不应该为深度嵌套的集合存储什么ID 假设我有以下4个系列,我的建模如下: 城市 身份证 库 身份证 城市ID 书籍 身份证 城市id(?) 图书馆的 页面 身份证 城市id(?) 类库(?) 书呆子 我的问题是,我应该用它旁边的(??)来存储这些值,还是应该通过它所属的集合来查找这些值 例如,我应该在每个页面文档中存储libraryId,还是应该通过它所属的书籍查找该值 谢谢 这完全取决于如何查询它们。你能想象一个你需要一个城市所有页面的情况吗?如David所说,

Meteor 如何列出文件夹中的文件

如何使用Meteor列出文件夹中的所有文件。我的应用程序上安装了FS集合和cfs:filesystem。我没有在文档中找到它。简短的回答是FS.Collection创建了一个Mongo集合,您可以像对待其他集合一样对待它,也就是说,您可以使用find()列出条目 答案很长 使用cfs:filesystem,您可以创建一个mongo数据库来镜像服务器上的给定文件夹,如下所示: // in lib/files.js files = new FS.Collection("my_files", {

使用meteor简单模式在字段中存储任意对象

我有一个带有字段type:Object的模式。但每当我插入时,该对象都是空的 这是我的模式 Contacts.attachSchema(new SimpleSchema({ firstName: { type: String, }, lastName: { type: String, optional: true }, twitterFriend: { // this field type:

Meteor 流星速度黄瓜和茉莉花共用测试夹具

我如何在黄瓜和茉莉花测试之间共享一个固定装置 我可以用一个jasmine服务器集成测试创建一个夹具,该夹具可以与其他jasmine服务器集成测试一起使用。但是(我想是因为不同的“镜子”)我不能在黄瓜测试中使用相同的夹具。Mongo集合没有jasmine服务器集成测试创建的数据 一种选择是将状态保存到平面文件,或nock,类似于meteor之外的文件。但是,为测试夹具引用一个公共集合(在同一个镜像上?)要简单得多。这可能吗?一切都可能。但是,我不建议让测试相互依赖。作为: 理想情况下,每个测试用例

Meteor 如何在任何项目中添加望远镜功能?

我想在我的meteor应用程序中使用望远镜。 如何在meteor应用程序中仅使用部分功能。 当我添加软件包时,我的应用程序崩溃了 我在.meteor中的包文件中添加了一些包 ############ Telescope Core ############ telescope:core 望远镜还不太支持加入另一个Meteor应用程序,抱歉。你可以查看下表,看看全望远镜回购协议是什么样子 感谢@Sacha,这意味着我不能在我的项目中使用任何功能,如搜索顶部栏等。

Meteor禁止创建客户端帐户不会阻止创建oAuth帐户

在lib中,所以客户端和服务器都可以。重置数据库,然后转到客户端并尝试使用帐户google和useraccounts:core软件包登录。登录成功 预期行为:未找到帐户,登录被拒绝。来自Meteor文档: 禁止ClientAccountCreation布尔值 将拒绝从客户端调用createUser。此外,如果 如果您正在使用帐户ui,则不会显示“创建帐户”链接 可用 Google软件包将通过Meteor.loginWithGoogle创建帐户,这样即使您将“禁止ClientAccountCrea

Meteor process.env.PWD不';不支持mupx部署

我在服务器上的Meteor项目中有此代码。它将字体文件加载到PDF生成包中: doc.font(process.env.PWD+'/public/[…]) 这在我的本地计算机上运行正常,但在部署过程中,我记录了以下错误: Error:enoint,没有这样的文件或目录“/bundle/bundle/public/[…]” PDF包正在使用fs.readFileSync尝试读取此文件 我正在使用mupx(Meteor Up的开发分支,使用Docker)进行部署 为什么process.env.PWD

Meteor 流星:如何处理消失和再现的元素

我有一个页面,列出了一个集合,可以进行过滤。 由于这些项目上有一些奇特的效果(悬停变暗),因此必须在加载页面后应用这些效果 这很好,但当我选择一个隐藏项目的条件,然后通过删除该过滤器使其重新出现时,这些效果将不再应用于这些项目 我曾尝试创建一个模板.rendered函数,但这只在加载第一页时起作用 我还认为在模板.events部分中添加'hover#mydiv:function(){…}可能会有所帮助,但仍然不起作用 我甚至试着听下拉列表('change#myselect':function()

为什么';Meteor是否有服务器端会话?

我想用Meteor创建一个购物车,允许未登录的访问者拥有持久的购物车 据我所知,在Meteor中跟踪未登录访问者的唯一方法是在客户端(localStorage)上设置一个持久ID,然后在每次订阅和方法调用中传递该ID 大多数web框架在cookie中存储一个唯一的会话ID,并且cookie随每个请求一起发送到服务器,因此服务器总是能够识别发送请求的访问者-为什么Meteor中没有类似的功能 看起来Meteor将用户ID(如果已登录)保存在localStorage中,并通过DDP连接将该用户ID发

Meteor 审计论证检查的主要目的是什么?

比如说, findByType: function(type) { check(type, String); var role; if(type === 'user') { role = 'user' } else if(type === 'admin') { role = 'admin' } Accounts.find({role: role}) } 在这种情况下,检查(类型、字符串)不是必需的吗 因此,如果我有自己的检查代码,

Meteor react ES6类react.组件

我不确定这是否是流星中已知的问题。他们说他们不支持1.2中的模块,但我不知道这是模块问题还是其他问题 我正在尝试使用ES6类构造React组件,如下所示: class App extends React.Component { render() { return <p>Hello World</p> } }; 有什么想法吗?如果我回到createClass语法,它在两个单独的文件中运行良好。我尝试添加一个导出类,但没有成功,它返回了一个意

Meteor 我应该如何设计多屏幕功能?

我使用一个带有工作区的webapp,用户可以在其中创建、加载和编辑文档。这个工作区由几个区域组成,每个区域负责工作的一部分。加载到工作区中的一组文档称为“项目”,并存储在“项目”集合中 项目中涉及的数据有两种类型: 附加到项目的一组文档。它存储在“项目”集合中的mongo文档中 特定用户正在处理的当前文档。我还没有存储它,我只是使用一组全局反应变量来加载一个文档和用户单击它时附加的信息。这意味着每次用户访问工作区/项目时,他都不会找到以前加载的文档,但根本不会加载任何文档 现在,我想存储第二类数

Meteor 在模数中使用图形魔术

我已经在modules.io上部署了我的meteor应用程序。我的应用程序需要图形魔术,但如何在moudulus上下载/安装GM 我需要在我的代码中使用像Graphics magick这样的东西,还是必须在服务器上安装它

等待Meteor.subscribe准备就绪

我想知道如何等待Meteor.subscribe准备就绪。这意味着我想写一个阻塞代码 我正在通过DDP连接从其他服务器订阅一个集合,希望等到订阅完成后再转到下一行 目前,我可以将onReadycallback作为Meteor.subscribe的最后一个参数传递,但代码是异步的,不会等到订阅准备就绪。有什么建议吗?您所说的“代码是异步的,不会等到订阅准备就绪”是什么意思?你不能把你的代码移到onReady回调中吗?@ChristianFritz我希望可以,但我有一个很好的理由来阻止它。关于如何解

如何使用Meteor传递X-Auth-Token';是HTTP.call吗?

如何使用Meteor的HTTP.call传递X-Auth-Token 例如,要做这样的事情: curl -X GET \ --header "X-Auth-Token: 1234567890abcdeff978d137bc01a2" \ https://example.com/api/call 我在以下方面找到了答案: 更详细一点,用咖啡脚本: res = HTTP.call 'GET', 'https://example.com/api/call', headers: 'X-Au

为什么Meteor.user和Meteor.userId不同?

我有一个拦截器: Router.onBeforeAction(function() { if (!Meteor.userId()) { console.log("lets login"); Router.go("login"); } else { this.next(); } }, { except: ['login', 'signup'] }); 它工作得很好,直到我更换了!Meteor.user()的Meteo

Meteor 注册流星的问题

我使用普通代码注册Meteor,尤其是在客户端。 正常的代码,这意味着无论用户何时创建,它都会将用户重定向到配置文件页面和会话 有效的代码 Template.signup.events({ 'submit form': function(event) { event.preventDefault(); var email = event.target.email.value; var username = event.target.username.v

如何在meteor中获取代码中的每个用户信息

如何访问每个meteor用户对象?我尝试过这个,但它显示Meteor.users没有函数forEach Meteor.users.forEach((user) => { console.log("userId", user._id); }); 然后我尝试了这个,但是它说userId是未定义的 _.toArray(Meteor.users).forEach((user) => { console.log("userId", user._id); }); 那我怎么才能

Meteor autoform selectize选择字段不显示所有选项

我使用的是带有selectize的Autoform,并不是所有字段选项都显示在模板中(10个选项中的1个似乎工作正常) 我以前在没有autoform的情况下手动渲染表单,从未遇到过此问题 这是我的模板助手: properties: function() { var properties =[]; var propertiesCursor = Properties.find(); propertiesCursor.forEach(functio

简单模式Meteor-数组验证

我使用这个包在进入数据库集合之前验证数据。我的集合中的一个字段必须包含字符串数组-我如何验证此字段?到目前为止您尝试了什么?您使用的是什么软件包,您的代码是什么样子的?请提供更多信息,我相信社区会帮助你。到目前为止,你做了哪些尝试?您使用的是什么软件包,您的代码是什么样子的?请提供更多信息,我相信社区会为您提供帮助。 YourCollection.attachSchema(new SimpleSchema({ ... yourArray: {type: [String]}, });

Meteor &引用;TypeError:无法读取属性';getLocation';“无效”的定义;启动angular2流星项目时

我最近一直在用typescript玩angular2 meteor,我已经创建了几个项目 我以前遇到的问题,为了解决它,我删除并重新安装了node_模块和meteor来解决这个问题 由于问题再次发生,我将发布此问题,而不是重新安装所有内容,以查看是否有人可以对此错误提供一些见解 一般来说,我创建了一个angular2流星项目,如 目前,应用程序非常基本 我在客户端目录中有一个主app.ts,代码如下: import 'reflect-metadata'; import 'zone.js/dist

Meteor 流星反应拖放

我正在制作一个应用程序,我必须在特定的图像上拖放标签,以便进行标记,那么我如何获得我拖放标签的目标DIV的id,或者请向我解释这一切是如何进行拖放的 我只想知道被拖动的标签的id和我放置这个标签的目标DIV 谢谢如果您使用的是jquery ui,则在删除时会有回调 $( ".selector" ).droppable({ drop: function( event, ui ) { var id = $(event.target).attr('id'); } }); 您可以将被

使用Meteor为每个时区每午夜安排cron作业

我需要在每个时区每午夜运行一个cron作业。使用Meteor实现这一目标的最佳方法是什么 有些包处理cron作业+时区,但不是每个时区都是动态的 例如:在这个CRM中,它每天都会为用户设置第二天的具体操作,但我只能在工作日结束后设置任务,否则它会破坏一切 谢谢大家! 是一个Meteor软件包,可帮助运行作业和安排作业。它提供了钩子,钩子有一个很棒的API来调度任务 找出您希望作业如何运行的逻辑,以及您可以使用它们实现的逻辑。是一个Meteor软件包,可帮助运行作业和安排作业。它提供了钩子,钩子有

Meteor中的非反应性和反应性数据(同一助手)

我有一个视图显示了用户发布的一些图片和一些数据(让我们来看图片Instagram) 我已经有这些图片作为非反应性数据(否则你会看到很多更新),但这些图片有一个按钮喜欢图片。如果这是非反应性数据,当我点击“喜欢”填充的心脏时,我看不到(我需要刷新) 这是我的订阅功能: this.subscribe('food', () => [{ limit: parseInt(this.getReactively('perPage')), //skip: p

Meteor Less尝试包含测试文件在cloud9 ide上导致错误

正在尝试让项目在Cloud9IDE上工作。出于某种原因,它会出现以下错误: => Errors prevented startup: While processing files with less (for target web.browser): packages/compileLessBatch/plugin/compile-less.js:164:11: Failed to decode Less path: http://localhost:8081/test/

MeteorJs:支付集成(PayUMoney)校验和失败

我正在研究MeteorJS(nodeJS)。正在尝试在本地主机上集成payUMoney。我有实时凭据并将我的HTTP呼叫转发到: 帖子URL:。 在控制台上,我得到的状态代码为200。但不是直接指向payu.com,而是在控制台上,我可以看到“校验和失败”错误。我试着: 1.jparker:crypto-sha256 2.johnschult:crypto-sha512 这是我的一段代码: var string = key +'|' +txnid+ '|' +amount+'|'+product

Meteor 重叠的流星出版物

我有一个meteor应用程序,它有两个帖子发布。一个用于所有帖子,一个用于特色帖子。共有两个特色帖子——“帖子1”和“帖子4”。我在所有页面上显示特色文章,同时我按名称对所有文章(包括特色文章)进行分页。当我在两页之间浏览时,来自两种出版物的数据会混淆,并显示不正确的结果 代码如下: Meteor.publish('posts', function(page) { const skip = parseInt(page && page !== '' ? page : 0) *

Meteor/Blaze打印对象作为JSON

全部, 我在《流星/火焰》中找到了一个目标。我试过这个 {{data}} 和它的输出 [object Object] 有什么方法可以让它输出JSON吗?如果您试图在该对象中返回值,则需要使用JS点表示法 {{foo.bar} 其中如果您试图在该对象中返回值,则需要使用JS点符号 {{foo.bar} 其中如果要在Blaze视图中以JSON格式打印JSON对象,可能需要查看JSON.stringify()方法 Home.js[助手示例] import './Home.html'; Tem

Meteor:当我尝试将Meteor更新到1.5.1版时,关于“accounts base”的依赖性Hell with atmosphere软件包

我尝试更新我的meteor项目,但当我尝试通过meteor update或通过meteor update(所有软件包),甚至通过meteor update(允许不兼容的更新)进行更新时,我会出现以下错误: error: No version of accounts-base satisfies all constraints: @1.3.1, @=1.3.0, @1.3.1 Constraints on package "accounts-base": * accounts-base@1.3.1

Meteor 流星-按时间戳排序

我有一个笔记应用程序,允许用户添加笔记。我试图在主页上呈现新创建的注释,但当我转到“添加注释”并添加注释,然后返回主页时,它会显示新注释(限制为10个),但刚刚创建的新注释位于列表的底部,而不是顶部。当我刷新页面时,它会像我希望的那样转到顶部。我怎样才能得到它,这样我就不必刷新页面就能在顶部得到新创建的便笺 我尝试通过使用时间戳(使用Date.parse(new Date()))进行排序,然后使用这个从服务器发布 Meteor.publish('notes-newest', function (

在离线Meteor/React本机应用程序中重复

我通常会在Google/Stackoverflow/Meteor论坛上找到问题的解决方案,或者找人来解决。然而,这次我完全被卡住了。这是我的问题: 我已经用Meteor/React/React Native创建了一个现场服务管理应用程序。经理可以在web应用程序上创建任务/工作单,现场团队可以在移动应用程序上创建报告/工作日志 然而,我所在的地区在某些地区的互联网连接很差。因此,脱机功能对于查看任务/报告以及创建报告(而不是任务)都至关重要。为了解决离线数据访问问题,我遵循了Spencer Ca

Meteor:使用异步方法

我用的是与流星反应。我在React组件中有一个调用Meteor.method的方法(该方法也在客户端上运行): //index.js 使用Google()登录{ console.log('1') Meteor.call('auth.loginWithGoogle',{},(err,res)=>{ 控制台日志('5'); 如果(错误){ console.log(err)//第16行: }否则{ console.log('success'); //控制台日志(res); //log('在react

Meteor 1.6.1和Vue 2的集成

两天来,我一直在尝试在我的Meteor项目中使用VUE2。首先,我查找了一些包,发现除了一个包列表之外,它本身没有任何可用的东西,所以这里就是。对Atmosphere的单独搜索产生了一些我实际上可以使用的东西,即,尽管我遵循了我能找到的关于这个包的所有说明,但我认为它对我来说并不正确,例如,我没有得到关于组件热重新加载的控制台消息,只有通常的标准Meteor启动消息+文件更改时的消息。它不使用client/main.html文件,除非我在client/main.js中显式导入它,但随后我得到一个

无法运行任何Meteor Js命令

这个问题的原因是什么?如何解决 Machine:~ username$ meteor create project '/Users/username/.meteor' exists, but '/Users/username/.meteor/meteor' is not executable. Remove it and try again. Machine:~ username$ 我不知道问题出在哪里,但是你可以通过移动文件并再次安装meteor来修复它。要移动文件,请执行以下操作: $

Meteor帐户的错误格式不一致。changePassword

我正在使用Meteor 1.8.1,在Accounts.changePassword返回的错误中发现了不一致和未记录的行为 假设流星误差对象将包含一个“原因”参数 但是,如果由于用户未登录而更改密码的尝试失败,则错误对象不包含“原因”或“错误”,仅包含“消息”,我在文档中找不到这些信息 尽管未记录,“消息”似乎总是返回,但不一致,因为在密码不正确的情况下,它包含错误代码403,而在用户未登录的情况下,它不包含错误代码403 Accounts.changePassword(oldPassword,

  1    2   3   4   5   6  ... 下一页 最后一页 共 111 页