如何在ember-data中更改DS.Model url?

时间:2012-12-10 09:26:34

标签: ember.js ember-data

我是新手(加入)并试图建立一个以Ember-data为中心的搜索中心Ember App。我想动态更改网址(基于搜索字符串),数据应自动更改(动态)。怎么做?

这是我的工作代码:

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','亚当斯')。我可以检查并看到网址改为'亚当斯'。但是数据不会再被提取。

编辑:emapp - > Emapp(由rudi-angela指出)

1 个答案:

答案 0 :(得分:1)

由于您已将'url'属性设为计算属性,因此当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)。