2012-02-27 3 views
10

Ember.jsを新しく導入しました。 私は次のコードは、作業を行うemberjsで初期化した後のフォーカス方法は?

<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> 
+0

HTML5のソリューションについてはhttp://stackoverflow.com/questions/12557584/how-to-use-autofocus-with-ember-js-templates/12560551#12560551も参照してください。 – rit

答えて

12

...、初期化後(サンプル、ID =「テキスト」で)のTextFieldに集中したい が、レディ機能では、フォーカスの方法を動作しません。

<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> 
+0

は問題なく動作します。どうも! – arumons

+1

これを行うためのエレガントな方法は、[新しい{{{input type = "text"}} 'Ember Handlebarsヘルパー](http://emberjs.com/api/classes/Ember.Handlebars.helpers.html# method_input)? – Abdull

+0

シーンの背後にあるあなたのためにビューが作成されるので、私はそうは思わない。あなたはJQueryを使ってDOM要素にアクセスすることができますが、それはエレガントではありません... –

1

TextFieldをサブクラス化して、あなたのテンプレートの周りにカスタムViewを広げるには、私には少し厄介に思えたので、私はそれ以上のコーディングなしで、直接テンプレートに、あなたはもっとエレガントにこれを行うことができますこの小さな1キロバイトのパッケージを書いた:

<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から取得できます。私はフィードバックを感謝します!

関連する問題