Atom的view框架2-SpacePenViews

atom/atom-space-pen-views项目,基于atom-archive/space-pen项目实现了一些常用的View,比如TextEditorView,SelectListView,ScrollView。

这些View用起来很方便,可以很迅速的做出和Atom本身风格一直的对话框等界面。

使用

在package.json中添加依赖:

 "dependencies": {
   "atom-space-pen-views": "^2.1.0",
 }

注意:SpacePenViews已经不再更新,最新版本为2.1.0

TextEditorView

对应文本编辑框。最常用的控件。

{View,TextEditorView} = require "atom-space-pen-views"

module.exports = 
class MyView extends View
  @content: ->
    @div =>
      @div "Type your answer:"
      @subview 'answer', new TextEditorView(mini: true,placeholderText:'hello')

效果如下:

TextEditorView

注意:现在在HTML中插入<atom-text-editor>标签就可以直接生成一个编辑框,不需要再使用TextEditorView了

ScrollView

ScrollView只是预定义了一些操作的回调函数,看其源代码就明白了:

module.exports =
class ScrollView extends View
  initialize: ->
    atom.commands.add @element,
      'core:move-up': => @scrollUp()
      'core:move-down': => @scrollDown()
      'core:page-up': => @pageUp()
      'core:page-down': => @pageDown()
      'core:move-to-top': => @scrollToTop()
      'core:move-to-bottom': => @scrollToBottom()

SelectListView

这是很经典的一个空间。fuzzy-finder, command-palette, symbols-view这些插件都是用他实现的。

SelectListView

默认底下会显示所有的选项,通过在输入框中输入关键字,列表会只显示符合的条目。默认就支持模糊搜索,所以用起来非常方便。

要实现图中的选择列表,一下的代码就能实现:

{SelectListView} = require 'atom-space-pen-views'

class MySelectListView extends SelectListView
 initialize: ->
   super
   @addClass('overlay from-top')
   @setItems(['Hello', 'World'])
   @panel ?= atom.workspace.addModalPanel(item: this) 
   @panel.show()
   @focusFilterEditor()

 viewForItem: (item) ->
   "<li>#{item}</li>"

 confirmed: (item) ->
   console.log("#{item} was selected")

 cancelled: ->
   console.log("This view was cancelled")

SelectListView的子类必须实现两个方法:

  • ::viewForItem

    SelectListView每次在生成一个条目时,都会调用该函数,并用该函数返回的结果作为条目的view。
    该函数可以放回HTML字符串,DOM元素,jQuery对象,View对象。

    注意:返回的对象的root元素必须是li

  • ::confirmed

    当一个条目被选中时,会调用该函数。

以上两个函数传入的参数,都是::setItems设置的条目之一。

SelectListView还有几个有用的函数,大家可以看github页面上的说明。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值