Подтвердить что ты не робот

Как сфокусироваться после инициализации с emberjs?

Я новичок в Ember.js. Я хочу сосредоточиться на TextField (в образце, id = "text" ) после инициализации, но в готовой функции не работает метод фокусировки...

<body>
  <!-- library load -->
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
  <script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.6.1.min.js"%3E%3C/script%3E'))</script>
  <script src="http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.5.min.js"></script>

  <script type="text/x-handlebars">
        {{view Em.TextField id="text"}} // want to focus it.
  </script>
  <script type="text/javascript">
    var App = Em.Application.create();
        App.ready = function() {
            $('#text').focus(); // does'nt work.
        }
  </script>
</body>
4b9b3361

Ответ 1

Следующий код работает:

<script type="text/x-handlebars">
      {{view App.TextField id="text"}} // want to focus it.
</script>
<script type="text/javascript">
  var App = Em.Application.create();

  App.TextField = Em.TextField.extend({
    didInsertElement: function() {
      this.$().focus();
    }
  });
</script>

Ответ 2

Подклассификация TextField, а затем распространение пользовательского View вокруг ваших шаблонов показалось мне немного грязным, поэтому я написал этот небольшой пакет 1kb, который позволяет вам сделать это более элегантно, прямо в шаблоне, без какой-либо дополнительной кодировки:

<body>
  <!-- all the libraries -->
  <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.3.0/handlebars.min.js"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.2.0/ember.min.js"></script>
  <script src="http://rawgithub.com/AndreasPizsa/ember-autofocus/master/dist/ember-autofocus.min.js"></script>
  <!-- your template -->
  <script type="text/x-handlebars">
    Hello, world! {{ input }}
    :
    : more elements here
    :
    {{ autofocus }} {# <<<<-- Magic happens here #}
  </script>
  <!-- your app -->
  <script>
    Ember.Application.create();
  </script>
</body>

Вы можете получить его из https://github.com/AndreasPizsa/ember-autofocus или с помощью bower install ember-autofocus. Я ценю обратную связь!