当前位置:  软件>JavaScript软件

轻量级的 CoffeeScript 库 Reactive Coffee

    来源:    发布时间:2014-12-30

    本文导语:  Reactive Coffee 是轻量级的 CoffeeScript 库/DSL,为响应式编程和声明式构建可扩展 web UIs 提供帮助。 示例: # This is our core data model, an array of Task objects.class Task   constructor: (descrip, priority, isDone) ->     @descrip = rx.cell(d...

Reactive Coffee 是轻量级的 CoffeeScript 库/DSL,为响应式编程和声明式构建可扩展 web UIs 提供帮助。

轻量级的 CoffeeScript 库 Reactive Coffee[图片]

示例:

# This is our core data model, an array of Task objects.class Task
  constructor: (descrip, priority, isDone) ->
    @descrip = rx.cell(descrip)
    @priority = rx.cell(priority)
    @isDone = rx.cell(isDone)tasks = rx.array([
  new Task('Get milk', 'important', false)
  new Task('Play with Reactive Coffee', 'critical', false)
  new Task('Walk the dog', 'meh', false)])# Our main view: a checklist of tasks, a button to add a new task, and a task# editor component (defined further down).main = ->
  currentTask = rx.cell(tasks.at(0)) # "View model" of currently selected task

  $('body').append(
    div {class: 'task-manager'}, [
      h1 {}, bind -> ["#{tasks.length()} task(s) for today"]
      ul {class: 'tasks'}, tasks.map (task) ->
        li {class: 'task'}, [
          input {type: 'checkbox', init: -> @change => task.isDone.set(@is(':checked'))}
          span {class: 'descrip'}, bind -> [
            "#{task.descrip.get()} (#{task.priority.get()})"
          ]
          a {href: 'javascript: void 0', init: -> @click => currentTask.set(task)}, [
            'Edit'
          ]
        ]
      button {init: -> @click => tasks.push(new Task('Task', 'none', false))}, [
        'Add new task'
      ]
      taskEditor {
        task: bind -> currentTask.get()
        onSubmit: (descrip, priority) ->
          currentTask.get().descrip.set(descrip)
          currentTask.get().priority.set(priority)
      }
    ]
  )# The task editor demonstrates how to define a simple component.taskEditor = (opts) ->
  task = -> opts.task.get()
  theForm = form {}, [
    h2 {}, ['Edit Task']
    label {}, ['Description']
    descrip = input {type: 'text', value: bind -> task().descrip.get()}
    br {}
    label {}, ['Priority']
    priority = input {type: 'text', value: bind -> task().priority.get()}
    br {}
    label {}, ['Status']
    span {}, bind -> [if task().isDone.get() then 'Done' else 'Not done']
    br {}
    button {}, ['Update']
  ]
  theForm.submit ->
    opts.onSubmit(descrip.val().trim(), priority.val().trim())
    @reset()
    false$(main)



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 轻量级Android开发工具 Android Tools
  • 轻量级软件框架 QP
  • 轻量级 NoSQL 数据库 WhiteDB
  • 轻量级的低功耗蓝牙协议栈 bcstack
  • 轻量级数据存储服务 LLServer
  • 轻量级 IRC 客户端 WeeChat
  • 轻量级字符串库 tstring
  • 轻量级音乐播放器 gejengel
  • 轻量级Linux发行版 boot2docker
  • 轻量级桌面环境 LXQt
  • 轻量级的 C++ 库 UCommon
  • 轻量级DNS服务器 djbdns
  • 轻量级 VPN 软件 SigmaVPN
  • 轻量级SSH终端 Mosh
  • 轻量级phpMVC框架 MyfMVC
  • 轻量级的ORM库 Idiorm
  • 轻量级PHP框架 CXPHP
  • 轻量级的PHP框架 Thinp
  • 轻量级PHP框架 Scorpio
  • 轻量级PHP开发框架 JJPHP


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3