1

Q:ハンドルバーをアプリケーションオブジェクト変数にバインドするにはどうすればよいですか?その変数が更新されると、画面上のハンドルバーデータも更新されますか?

jsfiddle: http: //jsfiddle.net/kQuVG/3/

ハンドルバー

<script type="text/x-handlebars">
    {{App.Player.stats.basic}} Scrap
</script>
<button>Add Scrap</button>

JavaScript

App.Player = Em.Object.create({
    stats:{
        basic: 10,
        premium: 20
    }
});    

$('button').click(function(){
    console.log(App.Player.stats.basic);
    App.Player.stats.basic += 10;
    console.log(App.Player.stats.basic);
});

フィドルも機能していません。ボタンをクリックしてApp.Player.stats.scrap値に10を追加し、それを出力ペインに反映させたいと思います。これはこれを行うための正しい方法でさえありますか?

前もって感謝します。

G

4

2 に答える 2

4

フィドルにはかなりの問題があります。オブジェクトのプロパティ(シングルトンや「App / Namespaceglobal」プロパティも含む)を設定および取得するときは、常にEmberのユニバーサルアクセサーを使用する必要があります。Emberには、オブジェクトのインスタンスを開始するために大文字を使用しないなど、特定の命名規則もあります(「People」ではなく「people」)。また、おそらくターゲット/アクションインターフェイスも使用する必要があります。

私はこれらの変更でフィドルを作成しました。http://jsfiddle.net/ud3323/Ac2hs/

ハンドルバー

<script type="text/x-handlebars">
  {{App.playerObj.stats.basic}} Scrap <br />
  <button {{action "click" target="App.playerController"}}>Add Scrap</button>
</script>​

JavaScript

var get = Ember.get, getPath = Ember.getPath, set = Ember.set, setPath = Ember.setPath;

App = Ember.Application.create();

set(App, 'playerObj', Object.create({
    stats:Ember.Object.create({
        basic: 10,
        premium: 20
    })
}));

set(App, 'playerController', Ember.Object.create({
    click: function(view) {
        getPath(App, 'playerObj.stats').incrementProperty('basic', 10);
    }
}));

</ p>

于 2012-05-03T17:07:08.510 に答える
3

セッターを使用する必要があり、値を直接割り当てる必要はありません。動作するものでフィドルを更新しました。

http://jsfiddle.net/kQuVG/4/

ハンドルバー

<script type="text/x-handlebars">
    {{App.Player.stats.basic}} Scrap
</script>
<button>Add Scrap</button>

JavaScript

App.Player = Em.Object.create({
    stats:{
        basic: 10,
        premium: 20
    }
});    

$('button').click(function(){
    console.log(App.Player.stats.basic);
    App.Player.setPath('stats.basic',  App.Player.getPath('stats.basic') + 10);
    console.log(App.Player.stats.basic);
});
于 2012-05-03T16:53:46.427 に答える