0

私は(emberにとって)初めてで、Ember-dataも使用して検索中心のEmberアプリを構築しようとしています。その場で(検索文字列に基づいて)URLを変更したかったのですが、データは自動的に(その場で)変更されるはずです。どうやってするの?

これは私の動作しないコードです:

Emapp.Data = DS.Model.extend({
first_name: DS.attr('string')
}).reopenClass({
  url: Emapp.MyURL.get('url')
});

Emapp.MyURL = Em.Object.create({
  urlParam: 'John',
  url: function()
  {
    return 'emb/data.php?id=%@'.fmt(this.get('urlParam'));
  }.property('urlParam')
});

私が実行するとき。emapp.MyURL.set('urlParam', 'Adams')。URL が「Adams」に変更されていることを確認できます。ただし、データは再度取得されません。

編集: emapp -> Emapp (rudi-angela が指摘)

4

1 に答える 1

1

「url」プロパティを計算プロパティにしたため、Ember は urlParam が変更されたときにこの値を更新します。ここで Ember に指示したのはこれだけです (そして、Ember は適切に実行しているようです)。しかし、ここで必要なのは、「urlParam」プロパティを変更してフェッチ アクションをトリガーすることだと思います。その場合の解決策は、urlParam を監視し、「urlParam」値が変更されたときにアクションを実行する別のオブジェクトを作成することです。これらの行に沿ったもの:

emapp.watcher = Ember.Object.create({
    valueBinding: "emapp.MyURL.urlParam",

    observer: function() {
        console.log("urlParam has changed:");
        // perform your fetch here
    }.observes("value"),
});

注:名前空間を大文字にする必要があると思いました(emappではなくEmapp)。

于 2012-12-10T12:10:00.630 に答える