组件
import Ember from 'ember';
export default Ember.TextField.extend({
type: 'text',
didInsertElement: function() {
this.$().addClass("form-control");
var autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')),{types:['geocode']} //trying without jQuery, but still.
);
}});
模板
{{gp-textfield id="autocomplete"}}
渲染成
<input id="autocomplete" type="text" class="ember-view ember-text-field form-control" placeholder="Enter a location" autocomplete="off">
但是,我仍然得到:
InvalidValueError: not an instance of HTMLInputElement
任何帮助都将不胜感激。
编辑:Ember 2.6
清理了一些代码,但没有效果。
didInsertElement: function() {
this.$().addClass("form-control");
var element = document.getElementById('autocomplete');
var autocomplete = new google.maps.places.Autocomplete(element);
}
Ember.on('didElementInsert', <your function>)
这样定义它,它仍然会在插入时运行,但不会覆盖父类中的didInsertElement方法,或者你可以在函数开头调用this._super(arguments),但我觉得前者更整洁。 - akstdidInsertElement
的更多信息,请参见链接。有关Ember.on
的更多信息,请参见链接。 - akstthis.get('element')
来获取组件的DOM元素,而不是全局ID(如果你想使用多个typeahead),并且根据Google文档中的示例,我认为你需要将typeahead绑定到地图上,还有其他一些事情(尽管也许你在代码的其他地方已经这样做了)。 - akst