我应该如何在流星项目中加载外部文件(即js,css,html)?

时间:2016-06-29 14:02:17

标签: javascript jquery html meteor

我正在尝试学习流星,我想从外面添加js,css和html页面。 I have tried to use this package but its not working it seems.我尝试使用以下代码

添加存储在不同位置的html文件
Template.hello.helpers({
    var row='';
    page(){
        jQuery.ajax({
            url:'Desktop/test.html',
            success:function(html){
                row=html;
            }
        });
        return row;
    }
});

它会产生意外的令牌错误。如果我删除var row,success和return语句,我的应用程序会在不添加外部页面的情况下运行。我还试图用$ .getScript()添加JS文件;但它似乎不适合我。如果任何人都可以帮助我,那将非常有帮助。

2 个答案:

答案 0 :(得分:0)

我不确定您打算如何处理此外部HTML,但您的帮助程序格式不正确。您的row变量会抛出错误,因为它不在您的函数内部。您不能直接在对象内声明变量。此外,您的AJAX调用是异步的,因此返回时仍将行定义为''

我认为你需要研究模板html在流星中是如何工作的。您应该将行html放入其自己的模板中,然后使用Spacebars将其包含在hello模板中,如下所示:

你好文件:

<template name='hello'>
  <h1>Hello and welcome!</h1>
  {{> row }}
</template>

行文件:

<template name='row'>
  <div class='row'>This is a row.</div>
</template>

答案 1 :(得分:0)

好的,我会尝试回答您提出的实际问题:如何在模板中包含外部html文件?

两种选择:

  1. 如果&#34;外部&#34;文件位于Meteor项目中,也将其作为模板:用<template name="xxx"> ... </template>包裹,然后只需转到{{> xxx}}即可插入。

  2. 如果文件位于其他地方,并且确实需要通过http调用包含,则将占位符元素<div id="fileGoesHere"></div>放在您希望的位置,然后在您的帮助程序中执行:< / p>

  3. (见http://docs.meteor.com/api/http.html

    function insertExternalFile() {
        HTTP.get( 'http://someurl', ( error, result ) => {
            if( error ) {
               console.log( error );
               return;
            }
            $('#fileGoesHere').html( result );
        });
    }