Ember - 缺少HBS文件的帮助程序操作

时间:2015-05-08 09:16:58

标签: ember.js handlebars.js

我写了一个带div的html。

我有两个hbs文件。我将其中一个视为局部,另一个视为正常。我无法调用模板上的操作。我正在缺少助手错误。

HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Ember Starter Kit</title>
  <link rel="stylesheet" href="css/normalize.css">
  <link rel="stylesheet" href="css/style.css">

</head>
<body>
  <div id="holder">

  </div>
  <script src="js/libs/jquery-v1.11.1.js"></script>
  <script src="js/libs/handlebars-v1.3.0.js"></script>
  <script src="js/libs/ember-v1.6.1.js"></script>
  <script src="js/libs/ember-data.js"></script>

  <script src="js/app.js"></script>
</body>
</html>

JS:

var data={title: "My New Post", body: "This is my first post!"};
function getTemplate(templateName,hbsPath,type){

      $.ajax({
            url: hbsPath, //ex. js/templates/mytemplate.handlebars
            cache: true
        }).done(function (src) {
            if (type === "partial") {
                Handlebars.registerPartial(templateName, $(src).html());
            } else {
                template = Handlebars.compile($(src).html());
                temp=template(data);
                $("#holder").append(temp);
            }
        });

}

getTemplate("dummy","/Test/templates/dummy.hbs","partial");
getTemplate("dummy","/Test/templates/application.hbs");


App = Ember.Application.create({});

App.Router.map(function(){
  this.resource('dummy');
  });


App.ApplicationController=Ember.ObjectController.extend({
  needs:['dummy'],
  actions:{
    refresh: function(){
      alert("application template refresh");
    }
  }
});
App.DummyController=Ember.ObjectController.extend({
  actions:{
    refresh: function(){
      alert("dummy template refresh");
    }
  }
});

HBS: application.hbs:

<script id="application" type="text/x-handlebars-template">
    {{> dummy}}
</script>

dummy.hbs:

<script type="text/x-handlebars" data-template-name='dummy'>
  <div {{action 'refresh' target="controllers.dummy"}}>
    Refresh
  </div>
  <div {{action 'refresh'}}>
    Refresh
  </div>
</script>

1 个答案:

答案 0 :(得分:0)

你的演示中的代码和有问题的代码是不同的。 Here is a fixed demo based on the code in ur question

修复你提供的demo可能需要你包含vanilla handlebars库,因为ember现在正在使用HTMLBars,它建立在把手之上,但有点不同。

Em.Handlebars.compile现在实际上正在使用HTMLBars编译方法。 You can see here

您可能需要使用https://github.com/rwjblue/broccoli-ember-inline-template-compiler

之类的内容