如何将标记的输入文本字段值绑定到Ember中的模型属性

时间:2013-11-06 01:01:52

标签: javascript ember.js ember-data

我有一个autocompleteView,用于生成具有typeahead支持的TextField,并希望根据模型在其“tags”属性中设置的内容填充一些初始值。 autocompleteView是嵌套的。

我正在使用bootstrap-tags.js作为标记输入和样式化下拉菜单,App.ItemEditView的{​​{1}}函数中的方法实例化标记输入元素。我也在使用Ember 1.0.0Ember-Data 1.0.0-beta.4 + canary.c15b8f80

我知道我可以(但不应该)用'didInsertElement'方法初始化值 processChildElements为此不允许观察mdoel? 我甚至不确定以这种方式访问​​模型是否有效/可取!

如何将此自动完成视图绑定到我的模型的“tags”属性,并观察它的变化?

this.set('value', this.get('parentView.controller.model.tags')

我的模板看起来像这样:

App.ItemEditView = Ember.View.extend({
    autocompleteView: Ember.TextField.extend({
        didInsertElement: function() {
            console.log(this.get('parentView.controller.model.tags').toString());
            Ember.run.scheduleOnce('afterRender', this, 'processChildElements');
        },
        processChildElements: function() {
            this.$().tag({
                placeholder: 'tags input',
                //enable typeahead by specifying the source array
                source: ['test', 'this', 'and', 'that'],
            });
        },
    })
});

App.Router.map(function() {
    this.resource('inventory', function() {
        this.resource('items', function() {
            this.resource('item', { path: ':item_id' }, function() {
                this.route('edit');
            });
        });
    });
});

1 个答案:

答案 0 :(得分:0)

我没有正确地将上下文传递给我的嵌套视图(或根本没有)。我应该将嵌套value视图的TextField属性绑定到当前上下文的tags属性(即当前模型),该属性恰好是给我们的模型按App.ItemEditController,如此:

{{view view.autocompleteView valueBinding=this.tags}}

就是这样,这解决了它!