首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用标签扩展TextField

问使用标签扩展TextField
EN

Stack Overflow用户
提问于 2012-02-07 04:48:01
回答 1查看 1.9K关注 0票数 4

我想写这样的东西:

代码语言:javascript
复制
{{ view MyApp.MyTextField label="Your name" valueBinding="person.fullname" }}

并输出以下内容:<div><label>Your name</label><input type="text" /></div>,其中的TextField当然绑定到person.fullname。我计划稍后在这个视图中实现某种类型的验证。

我如何在Ember中做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-07 06:17:24

我认为您必须创建一个自定义视图,如下所示:

代码语言:javascript
复制
App.FieldView = Ember.View.extend({
  classNames: 'field clearfix'.w(),

  defaultTemplate: Ember.Handlebars.compile('<div>{{view LabelView}}{{view DataView}}</div>'),

  label: '',

  /**
   * Class representing the label tag
   */
  LabelView: Ember.View.extend({
    tagName: 'label',

    attributeBindings: ['for'],

    'for': '',

    textBinding: 'parentView.label',

    defaultTemplate: Ember.Handlebars.compile('{{text}}')
  }),

  /**
   * Class representing the data capture control.
   */
  DataView: null,

  /**
   * Set the 'for' attribute for the label to that of the data view
   */
  willInsertElement: function() {
    this._super();

    var childViews = this.get('childViews');
    var labelView = childViews[0];
    var dataView = childViews[1];
    labelView.set('for', dataView.$().attr('id'));
  }

});

然后,您可以像这样对textbox使用它

代码语言:javascript
复制
MyApp.MyField= MyApp.FieldView.extend({
  label: 'Label Text',

  DataView : Ember.TextField.extend({
    valueBinding: 'MyApp.pageController.myFieldData'
  })
});

或者像这样的下拉列表

代码语言:javascript
复制
MyApp.MyField= MyApp.FieldView.extend({
  label: 'Label Text',

  DataView : Ember.Select.extend({
    ...
  })
});

希望这能有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9167025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档