0

我是新手(对于 ember),并试图构建一个以搜索为中心的 Ember 应用程序 w/ Ember-data。我想动态更改 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 在这里做的所有事情(显然它做得很好)。但我认为您在这里想要的是“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 回答