0

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

我将bootstrap-tags.js用于标记的输入和样式化的下拉菜单,下面App.ItemEditViewprocessChildElements函数中的方法实例化了标记输入元素。我也在使用Ember 1.0.0Ember-Data 1.0.0-beta.4+canary.c15b8f80

我知道我可以(但不应该)初始化 'didInsertElement' 方法中的值, this.set('value', this.get('parentView.controller.model.tags')因为它不允许观察 mdoel?我什至不确定以这种方式访问​​模型是否有效/可取!

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

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');
            });
        });
    });
});

我的模板如下所示:

<script type="text/x-handlebars" data-template-name="items">
    <div id="item">
        {{outlet}}
    </div>
</script>
<script type="text/x-handlebars" data-template-name="item">
    <div id="item">
        {{outlet}}
    </div>
</script>
<script type="text/x-handlebars" data-template-name="item/edit">    
    <div id="tags">
        {{view view.autocompleteView valueBinding="view.valueTags"}}
    </div>
</script>

<script type="text/x-handlebars">
    {{outlet}}
</script>
4

1 回答 1

0

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

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

就是这样,这解决了它!

于 2013-11-06T02:39:58.893 回答