1

我正在使用text! plug-inrequire.js 来加载我的骨干项目的 javascript 模板。

这里我的 mini_signin.html

<script type="text/template" id="signinTemplate">
   <div class="cartheadertitle">Sign In
       //html of sign in element
   </div>
</div>

看法 :

define(["jquery" , 
        "underscore" , 
        "backbone" , 
        "text!templates/User/mini_signin.html"],
        function($ , _ , Backbone , signinTemplate){
   var SignInView = Backbone.View.extend({
         el : $("#loginpanel"),
         initialize:function(){
            this.render();
            console.log("start");
         },
         render:function(){
            var signIn = _.template(signinTemplate, {})
            this.$el.html(signIn);
            console.log("stop");
         }
   });
   return SignInView;
});

路由器:

 define([
'jquery',
'backbone',
'router',
'views/CartList'
 ] , function($,Backbone,Router , SignInView){
  var AppRouter = Backbone.Router.extend({
    routes: {
        "showCart": "cartList",
        "*actions": "defaultRoute" // Backbone will try match the route above first
    }
  });
  // Instantiate the router
  var app_router = new AppRouter;
  app_router.on('route:cartList', function (showCart) {
       var signInView = new SignInView();
       signInView.render();
       alert("test");
  });
  Backbone.history.start();
});

控制台结果:

stop
start
stop

alert在路由器中工作,但signInView在 chrome 控制台中没有呈现任何错误。

对此问题的任何想法表示赞赏。谢谢。

4

1 回答 1

2

删除 html 文件中的脚本,只留下 html 代码。

通常最好为每个模板创建一个html来组织好代码和文件。

<div class="cartheadertitle">Sign In
       //html of sign in element
   </div>
于 2013-09-29T10:31:20.590 回答