在Ember.js中声明绑定的正确方法

时间:2012-04-10 21:02:43

标签: ember.js

我已经阅读了Ember.js文档+示例,带有绑定的嵌套视图让我感到困惑。

我有以下缩写的HTML(工作正常):

{{#view App.outerArea}}
    {{#view innerArea}}
        {{view Ember.TextField valueBinding="parentView.parentView.bound.username"}}
    {{/view}}
{{/view}}

...和JavaScript(也正常工作):

App = Ember.Application.create();
App.outerArea = Ember.View.extend({
    bound : {
        username:'test',
    },
    innerArea: Ember.View.extend({}),
});

(如果我从HTML中删除innerArea,我可以完全删除'parentView.parentView。'。

为了清理这个,我试过了:

...
{{view Ember.TextField valueBinding="bound.username"}}
...
innerArea: Ember.View.extend({
    bound: function() {
        return App.outerArea.bound;
    }
})

并尝试过:

{{view Ember.TextField valueBinding="getPath(bound.username)"}} // with above bound: function().

以及其他一些组合,但它们根本不起作用。

是否有更多优雅方法从TextField valueBinding引用'parentView.parentView.bound.username'?这有多种方法吗?对于这类事情,最好的设计模式是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,在原始示例中,您只需要一个parentView来绑定文本字段的值(请参阅http://jsfiddle.net/MikeAski/tkDp6/

其次,在内部视图中定义bound绑定的方式并不好:你应该尝试:

...
innerArea: Ember.View.extend({
    boundBinding: 'parentView.bound'
})

(请参阅http://jsfiddle.net/MikeAski/tkDp6/2/