条件转换的正确方法取决于在emberjs中呈现视图的位置

时间:2014-01-23 07:02:20

标签: ember.js

您好我有一个视图调用AutocompleteView它的工作是将谷歌地方自动填充放在着陆页上。此页面上没有地图呈现只是一个文本框。 我试图实现的是用户应该只在登陆页面上使用自动填充文本框。进入一些选择的地方。我将用户转换到一个特定的路线,在该路线中,相同的AutocompleteView将使用地图进行渲染,以便用户可以更改他的地点选择。

当用户在呈现地图的页面上更改位置时,此处不需要转换

我正在尝试的approch是我检查父视图

{{view AutocompleteView}}

已使用this.get('ParentView")并基于父视图

呈现

如果ParentView是应用程序(登陆页面),我将转换,否则不会发生转换。

我没有很好的体验javascript mvc我怀疑

依靠ParentView进行转换是对的还是有更好的方法?

App.AutocompleteAddressView = Ember.View.extend({
tagName: 'input',
didInsertElement: function() {
    var options = {
        componentRestrictions: {country: "xx"}
    };
    var autocomplete = new google.maps.places.Autocomplete(this.$()[0], options);
    console.log(this.get('parentView'));
}

});

1 个答案:

答案 0 :(得分:0)

听起来你想要的是根据当前活动的路线 - 目标网页或结果页面来处理“在搜索框中输入文字”的操作。

执行此操作的Ember方法是使用this.get('controller').send(#{actionName})从您的视图触发操作。该操作将从视图的控制器冒泡到当前路径。然后,您可以根据活动的路线不同地处理该操作,例如:

App.IndexRoute = Em.Route.extend({
  ...
  actions: {
    search: function() {
      # transition to results page
    }
  }
});

App.ResultsRoute = Em.Route.extend({
  ...
  actions: {
    search: function() {
      # update visible results
    }
  }
});

为了简化这一过程,您可能希望为AutocompleteAddressView使用Ember.TextField的子类。然后,您可以在视图上定义action属性,当用户键入enter / return时,该属性将自动触发。