4

我已经阅读了 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”?有不止一种方法可以解决这个问题吗?这类事情的最佳设计模式是什么?

谢谢!

4

1 回答 1

2

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

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

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

(见http://jsfiddle.net/MikeAski/tkDp6/2/

于 2012-04-11T04:09:57.373 回答