Получить текстовое значение, переданное в valueBinding в Ember.TextField (проверки Ember)

Я пишу расширение для Ember.TextField, чтобы изменить класс текстового поля, если родительский объект недействителен. Я использую библиотеку ember-validations для проверки моего объекта ember-data. У меня это работает прямо сейчас, но я хотел бы иметь возможность сделать это, не передавая переменную validationMethod. Как я могу получить только текстовую строку, переданную в valueBinding из представления?

address.js.coffee

App.Address = DS.Model.extend(Ember.Validations,
  street_1: DS.attr('string')
  street_2: DS.attr('string')
  ...

  validations:
    street_1:
      presence: true
)

validated_text_field.js.coffee

Ember.ValidatedTextField = Ember.TextField.extend(
  validationMethod: null
  classNameBindings: 'error'

  focusOut: ->
    object = @get('controller').get('content')
    object.validateProperty(@get('validationMethod'))

  error: (->
    object = @get('controller').get('content')
    if object.get("isValid")
      return false
    else
      error_keys = object.get("validationErrors." + @get('validationMethod') + ".keys")
      if error_keys
        return error_keys.length > 0
      else
        return false
  ).property('controller.content.isValid')
)

edit.handlebars

{{view Ember.ValidatedTextField validationMethod="street_1" valueBinding="street_1" id="street_1" placeholder="Street 1" required="true"}}
...

person dignoe    schedule 12.02.2013    source источник


Ответы (1)


Хотя я не могу этого предложить, потому что это внутренний код, вы можете получить строки из самих привязок.

validationMethod = @get("valueBinding._from").split(".").get("lastObject")

Посмотрите, как мы обрабатываем метку Ember-Bootstrap для другого примера: https://github.com/emberjs-addons/ember-bootstrap/blob/master/packages/ember-bootstrap/lib/forms/field.js

person Bradley Priest    schedule 12.02.2013