您好我有一个视图调用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'));
}
});
答案 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时,该属性将自动触发。