Json 将Cast.js与Meteor一起使用
我正在使用Meteor初始化的例子,我很难理解它是如何工作的。他的演示是用Meteor构建的,但是他的博客和github上的说明对我来说有点不清楚。我正在尝试做一个类似于他的演示的布局,但它不会渲染视频,而是渲染照片。我希望有人能告诉我哪里出了问题 首先,我的HTML模板如下:Json 将Cast.js与Meteor一起使用,json,meteor,jquery-isotope,Json,Meteor,Jquery Isotope,我正在使用Meteor初始化的例子,我很难理解它是如何工作的。他的演示是用Meteor构建的,但是他的博客和github上的说明对我来说有点不清楚。我正在尝试做一个类似于他的演示的布局,但它不会渲染视频,而是渲染照片。我希望有人能告诉我哪里出了问题 首先,我的HTML模板如下: {{#constant}} <div id="cast"></div> {{/constant}} 编辑: 0.5.1上的新更改很好地修复了我在cast.js中遇到的大多数错误,但是我仍然在
{{#constant}}
<div id="cast"></div>
{{/constant}}
编辑:
0.5.1上的新更改很好地修复了我在cast.js中遇到的大多数错误,但是我仍然在将数据渲染到每个模板中时遇到一些问题
首先,当我运行db.picture.findOne()时,您知道我的数据是如何构造的
在mongoDB中,数据呈现为:
{
"id" : "999999999999999",
"from" : {
"name" : "Seano314",
"id" : "99999999"
},
"picture" : "https://photoSmall.jpg",
"source" : "https://photoLarge.jpg",
"height" : 540,
"width" : 720
}
现在我从Template.cast.rendered
函数中得到一个错误无法设置未定义的属性'rendered'。我不确定是因为我调用的数据错误,还是因为我没有意识到发生了其他事情,所以我得到了这个错误。你有没有想过会发生什么
提前谢谢 谢谢你尝试我的小图书馆。我已经很长时间没有接触过Meteor了(也没有接触过这个库),所以希望我仍然可以为这个工作提供一些帮助
首先,您需要在Meteor客户端代码中包含app.js
文件(我在repo中将其重命名为cast.js
),而不是服务器端代码。这可能解释了为什么出现未定义的窗口
错误。正如您在发布的代码末尾所看到的,cast.js
正在尝试将其名称附加到全局窗口
对象。。。从而使其成为一个全局变量。如果窗口不存在(服务器上不存在),则会出现此错误
其次,如果您使用的是独立构建cast.js
,则不需要使用require('cast')
语句。强制转换构造函数已定义为cast
除此之外,事情看起来还不错。我已经更新了一些流星的具体说明。我还建议使用dist
文件夹中更新的cast.js
文件
编辑:
好的,你的新错误是Meteor加载脚本的结果。对于初学者,您需要确保脚本仅在客户端上加载,并且在加载dom之后加载。这解释了您当前的错误:document.body
未定义,因为dom尚未加载!这是因为Meteor将其所有脚本加载到
。。。然而,在我编写的大多数web应用程序中,我在
标记的末尾加载脚本
要解决此问题,请执行以下操作:
将cast.js
文件放在public
文件夹中,这样它就不会被Meteor自动绑定。
然后在加载DOM后加载脚本:
if (Meteor.isClient) {
Meteor.startup(function() {
$('head').append('<script src="/cast.js"></script>');
});
}
if(Meteor.isClient){
Meteor.startup(函数(){
$('head')。追加('');
});
}
这样做可能会遇到一些问题,即在加载cast
之前运行模板。。。但可能没问题。我还可以在lib本身中做一个小的修复,这样它在加载dom之前不会检查translate3d
支持
编辑:
Cast.js的0.5.1版现在只需将其包含在Meteor的客户端代码中即可正确加载。还请注意,API已经发生了相当大的变化(为了更好,imo)。此外,这里有指向的链接和指向的链接。“在html页面中需要此脚本。”您在哪里执行此操作?您可能希望在正在使用的任何html文件(可能是index.html文件)的顶部包含标记。我已尝试在客户端和服务器中添加该文件,但两者都不起作用。如果我错了,请纠正我,但是我认为meteor会自动获取app.js文件的源代码。尽管如此,我还是在
中加入了源代码标签,但它不起作用。介意把代码放到github repo中吗?嘿,伙计们。明天早上我会仔细看一看,我们可以把它整理好。太好了!谢谢,便当。我仍然在Meteor.autorun
函数中遇到两个错误,分别是无法设置未定义的
的属性'rendered',以及无法调用null的方法'insertBefore',这似乎是问题的根源。第二个错误来自cast.js
中的第601行。你有没有想过是什么原因造成的?另外,仅供参考,我的应用程序使用的是Iron路由器而不是Meteor路由器,这可能与此有关。非常奇怪。这一定与Meteor加载脚本的方式有关。。。自从我上次使用它以来,这种行为可能已经改变了。我将尝试安装最新版本的Meteor,看看是否可以运行它。Cast.js的0.5.1上的新更改很好地修复了第二个错误,但是我仍然得到了Undededefine的无法设置属性“rendered”的错误。如果不是太麻烦的话,你有一个可以在github中发布的流星示例吗?我认为问题可能来自我如何调用数据,但是我很难确定修复需要在哪里。我会更新我上面的问题,这样你就可以看到我正在使用的完整代码了。太棒了!非常感谢你的帮助,本托。这个例子很有魅力。
{
"id" : "999999999999999",
"from" : {
"name" : "Seano314",
"id" : "99999999"
},
"picture" : "https://photoSmall.jpg",
"source" : "https://photoLarge.jpg",
"height" : 540,
"width" : 720
}
if (Meteor.isClient) {
Meteor.startup(function() {
$('head').append('<script src="/cast.js"></script>');
});
}