単純なember.jsテキストフィールドがあり、オートフォーカスを追加しようとしています
{{view PersonApp.SearchField placeholder="search..." valueBinding="searchText"}}
PersonApp.SearchField = Ember.TextField.extend({
});
これをJavaScriptに追加できますか、それともテンプレート自体の属性と同じくらい簡単ですか?
単純なember.jsテキストフィールドがあり、オートフォーカスを追加しようとしています
{{view PersonApp.SearchField placeholder="search..." valueBinding="searchText"}}
PersonApp.SearchField = Ember.TextField.extend({
});
これをJavaScriptに追加できますか、それともテンプレート自体の属性と同じくらい簡単ですか?
アップデート:
Emberの最近のバージョンでは、これが組み込まれているため、attributeBindingを追加するためにTextFieldを再度開く必要はありません。2014年1月(commit fdfe8495)の時点で、テンプレートでHTML5オートフォーカス属性を使用できます。
{{input value=search type="text" placeholder="Search" autofocus="autofocus"}}
これが簡単なjsfiddleのデモンストレーションです。
以前の解決策:
TextFieldを再度開いて、オートフォーカス属性をバインドできるようにすることもできます。
Ember.TextField.reopen({
attributeBindings: ['autofocus']
});
そして、テンプレートで:
{{input value=search type="text" placeholder="Search" autofocus="autofocus"}}
TextFieldでHTML5オートフォーカス属性を使用するオプションもあります。
PersonApp.SearchField = Ember.TextField.extend({
attributeBindings: ['autofocus'],
autofocus: 'autofocus'
});
オートフォーカスフィールドの詳細については、MozillaDeveloperNetworkのドキュメントも参照してください。
オートフォーカスとは、テキストボックスにすぐに焦点を合わせ始めることを意味しますか?あなたはそれを望んdidInsertElement
でいます。
didInsertElement: function() {
this.$().focus();
}
このメソッドを小さな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 }}
</script>
<!-- your app -->
<script>
Ember.Application.create();
</script>
</body>
パッケージはhttps://github.com/AndreasPizsa/ember-autofocus
(またはbower install ember-autofocus
)にあります。楽しみ!