Ember.jsを使用して小さなサンプルアプリケーションを作成しています。私の目標は、Emberのユースケースを判断することです。私のアプリはシンプルなTwitterフィードビューアです。 Ember.Buttonオブジェクトをクリックすると、Twitterフィードが読み込まれ、ページにダンプされます。すべてうまくいくが、ユーザー名はハードコードされている。もっと深く掘り下げたいので、Twitterのユーザー名を示すEmber.TextFieldビューを追加しました。Ember.TextFieldの値の収集と使用
ボタンがツイートを表示する箇条書きリストをどのようにターゲットにしているかを確認し、データを取得するコントローラをどのように知っているかもわかります。私の質問は、Emberに入力フィールドからユーザ名の値を引き出し、それをツイートを呼び出すメソッドに渡すように指示する方法です。私は、既存のJSコードを追加している:
// app.js
var Tweets = Em.Application.create();
Tweets.tweetsArray = Em.ArrayController.create({
content: [],
loadTweets: function() {
var url = 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=commadelimited&callback=?';
$.getJSON(url,function(data){
Tweets.tweetsArray.pushObjects(data);
})
}
});
そして、ここでは、ビューです:
<script type="text/x-handlebars">
<div id="frm">
{{view Ember.TextField placeholder="Twitter username"}}
{{#view Ember.Button target="Tweets.tweetsArray" action="loadTweets"}}
Load Tweets
{{/view}}
</div>
<ul id="tweets">
{{#each Tweets.tweetsArray}}
<li>
<h3>{{user.screen_name}}</h3>
<p>{{text}}</p>
</li>
{{/each}}
</ul>
</script>
これは私が思ったよりも簡単です。だから、アプリケーションにusernameを入れることで、それをグローバル変数にしているのでしょうか?あるいは、そのコンセプトは本当にEmberの場所を持っていませんか? – commadelimited
別の質問です。 JSファイルではTweets.get( 'username')と言っていますが、ビューではTweets.usernameと言っています。どちらか一方のルールがありますか、あるいはそれらは交換可能ですか? – commadelimited
実際のアプリケーションでは、おそらくこの変数を含むコントローラオブジェクトを作成しますが、これをできるだけ単純なものにしたいと考えていました。 –