作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力找出用来自 Meteor 中外部 API 调用的数据填充模板的基本模式。
这些是游戏中的元素
meteor create monkeyproject
创建example.com/api/getmonkeys
.它返回一组猴子,每个猴子都有不同的 name
. monkeyTemplate
的 Handlebars 模板与 {{#each}}
环形。让我们说它是这样的:<template name="monkeyTemplate">
{{# each monkeys}}
One of our monkeys is named {{name}}. <br>
{{/each}}
<input type="button" id="reload" value="Reload monkeys" />
</template>
monkeyTemplate
与来自我们外部 URL 的猴子。 Template.monkeyTemplate.monkeys
返回的任何内容填充模板。功能。考虑到页面将在外部请求完成之前加载,我们如何用来自外部 URL 的内容填充它? Meteor.HTTP.call("GET", "http://example.com/api/getmonkeys", callback )
来获取我们的 JSON。 .我们把这个请求放在哪里,在这种情况下我们在回调函数中放了什么? Meteor.isServer
控制服务器端发生的事情和客户端发生的事情。/Meteor.isClient
条件,或者将我们的代码放入名为 client
的文件中和 server
文件夹。服务器端与客户端需要哪些代码? Template.monkeyTemplate.events['click #reload']
来确定单击按钮时会发生什么。 .在这种情况下,我们的回调函数会发生什么? 最佳答案
我不确定这是否是“标准”模板,但它很好地达到了目的。
monkeys
和 loading
.第一个将在获取后显示实际数据,后者将负责通知用户数据尚未获取。 created
模板功能,设置loading
帮助器为 true 并使用 HTTP
获取数据称呼。 <template name="monkeys">
{{#if loading}}
<div>Loading...</div>
{{/if}}
{{#if error}}
<div>Error!</div>
{{/if}}
{{#each monkeys}}
<div>{{name}}</div>
{{/each}}
<div><button class="monkeys-reloadMonkeys">Reload</button></div>
</template>
var array = null;
var dep = new Deps.Dependency();
Template.monkeys.created = function() {
reloadMonkeys();
};
Template.monkeys.events({
'click .monkeys-reloadButton': function(e,t) {
reloadMonkeys();
};
});
var reloadMonkeys = function() {
array = null;
dep.changed();
HTTP.get('http://example.com/api/getmonkeys', function(error, result) {
if(!error && result) {
array = result;
} else {
array = 0;
}
dep.changed();
});
};
Template.monkeys.monkeys = function() {
dep.depend();
return array ? array : [];
};
Template.monkeys.loading = function() {
dep.depend();
return array === null;
};
Template.monkeys.error = function() {
dep.depend();
return array === 0;
};
关于meteor - 基本模式 : Populate a template with JSON from an external URL in Meteor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19416488/
我是一名优秀的程序员,十分优秀!