需要一个非常奇怪的情况的帮助我在BB,_和要求。我使用Grunt的assemble.io来预编译我的html,所以在任何特定时刻我都将我的所有模板都放在同一个文件中。我会更清楚,我有这是我的index.html:
<div class="container">
<div class="main-container">
<script type="text/template" id="login-template">
bla bla bla
</script>
<script type="text/template" id="register-template">
tralalala
</script>
</div>
</div>
这是我的路由器:
define(['backbone', 'underscore', '../views/homeView', '../views/registerUserView' ], function(Backbone, _, HomeView, RegisterUserView) {
var homeView = new HomeView(),
registerUserView = new RegisterUserView();
var Router = Backbone.Router.extend({
routes: {
'' : 'home',
'register/:id': 'registerUser'
}
});
var router = new Router();
router.on('route:home', function(){
homeView.render();
});
router.on('route:registerUser', function(id){
registerUserView.render(id);
});
Backbone.history.start();
return Router;
});
这是我的注册视图:
define(['backbone', 'underscore'], function(Backbone, _) {
var RegisterUserView = Backbone.View.extend({
el : '.main-container',
render : function (id) {
var _this = this,
_template = _.template($('#reg-user-main-template').html(), {} );
//todo: create the switch
_this.$el.html(_template);
},
initialize: function() {
}
});
return RegisterUserView;
});
我有一个带有href =&#34; #register / 1&#34;的按钮,当我点击时会给我:
未捕获的TypeError:无法读取属性&#39;替换&#39;未定义的localhost / js / libs / underscore-amd / underscore.js:1180
所以我知道会发生这种情况,因为_template = _.template($(&#39; #reg-user-main-template&#39;)。html(),{});得到了一个未定义的&#34; $(&#39; #reg-user-main-template&#39;),但我不知道为什么或如何,因为我的所有模板都在同一个html文件中。任何帮助将不胜感激,我相信如果你帮忙,Karma或其他什么会给你很多啤酒:)