0

我需要一些帮助才能开始使用 node.js 和卓别林

这是场景:

  • 客户来到我的服务器
  • 我为客户端提供一个静态 html 页面。在这个 html 中有一个 id 为“test”的 div
  • 这个 html 还启动了卓别林应用程序
  • 在我的卓别林应用程序中,我希望能够将事件附加到“测试”div,例如单击 div 警报“是的”

这是如何运作的?

对于我通过尝试设法学到的东西(因为我真的没有在这个卓别林上找到任何好的说明......)是我需要创建区域,然后将我的观点放入其中。这些视图只能在该区域内有事件。我没有得到的是如何使用这个“测试” div 作为一个区域?

服务器

应用程序.js

var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');

var app = express();

app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

客户

索引.html

<!doctype html>
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title></title>
  <meta name="viewport" content="width=device-width">
  <link rel="stylesheet" href="/stylesheets/app.css">
  <script src="/javascripts/vendor.js"></script>
  <script src="/javascripts/app.js"></script>
  <script>require('initialize');</script>
</head>
<body>

    <div id="test">
    </div>

</div>
</body>
</html>

路线.咖啡

module.exports = (match) ->
  match '', 'home#index'

家庭控制器.coffee

Controller = require 'controllers/base/controller'
HeaderView = require 'views/home/header-view'
HomePageView = require 'views/home/home-page-view'

module.exports = class HomeController extends Controller
  beforeAction: ->
    super
    @compose 'header', HeaderView, region: 'header'

  index: ->
    @view = new HomePageView region: 'main'

主页-view.coffee

View = require 'views/base/view'

module.exports = class HomePageView extends View
    autoRender: true
    className: 'home-page'
    template: require './templates/home'
    events:
        'click "testi"': 'testEvent'

    testEvent: (event) ->
        alert "Yeah"

在这个 HomePageView 中单击可以正常工作,但是我如何将该事件绑定到我的 html 中的“测试”div,或者我如何使用已经存在的 div 作为区域?

4

1 回答 1

0

您可以在主布局视图中添加容器选项,其中值是您的 dom 元素,例如#test。所以它可能看起来像这样。

View = require 'views/base/view'

module.exports = class HomePageView extends View
  container: '#test'
  autoRender: true
  className: 'home-page'
  template: require './templates/home'
  events:
    'click "testi"': 'testEvent'

  testEvent: (event) ->
    alert "Yeah"

我还建议你看看这个项目 - https://github.com/chaplinjs/chaplin-boilerplate。一个很好的样板示例,应该有助于您的理解。

于 2013-11-05T21:16:42.937 回答