Ember.js 如何更改余烬数据中的DS.Model url?

Ember.js 如何更改余烬数据中的DS.Model url?,ember.js,ember-data,Ember.js,Ember Data,我是新的(余烬),并试图建立一个搜索为中心的余烬应用程序w/余烬数据也。我想动态更改url(基于搜索字符串),数据应该自动更改(动态)。怎么做 这是我的非工作代码: Emapp.Data = DS.Model.extend({ first_name: DS.attr('string') }).reopenClass({ url: Emapp.MyURL.get('url') }); Emapp.MyURL = Em.Object.create({ urlParam: 'John',

我是新的(余烬),并试图建立一个搜索为中心的余烬应用程序w/余烬数据也。我想动态更改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指出)

由于您已将“url”属性设置为计算属性,因此当URLPARM更改时,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)。

我能够观察到更改。现在,当我尝试重新加载数据时(不知道怎么做)<代码>索引:Em.Route.extend({Route:'/',connectOutlets:function(router,context){router.get('applicationController').connectOutlets('home',router.get('store').findAll(Emapp.Data));}})类似地,我实现了
Emapp.watcher=Em.Object.create({valueBinding:'Emapp.MyURL.urlparm“,observer:function()。什么都不会发生。有没有一种不那么复杂的方法呢?