1

我正在尝试为数据属性做一个属性绑定。

这是一个起始小提琴http://jsfiddle.net/EsF4R/43/它没有被绑定,只是取字符串的值'App.DateView.endDateString'

App = Ember.Application.create({});
App.CalendarController= Em.Controller.extend();
App.CalendarView = Em.View.extend({
   templateName: 'calendar',
   attributeBindings: ['data-date'],
   'data-date': 'App.DateView.endDateString',  
});

App.DateView = Em.View.extend({
    endDateString: '7/7/2012' /* This actually is a function */
});

我想绑定'data-date''App.DateView.endDateString'

我尝试使用

'data-date' : function(){
            Em.Binding('App.CalendarView["data-date"]','App.DateView.endDateString');
            return '1/1/1988';
            }.property().cacheable(),

但没有用。

4

3 回答 3

1

如果要将属性绑定到必须附加Binding到属性名称的路径'data-dateBinding': 'path.to.date',请参见http://jsfiddle.net/pangratz666/tV2Zq/

App = Ember.Application.create({
    dateString: '7/7/2012'
});

App.CalendarView = Em.View.extend({
    attributeBindings: ['data-date'],
    'data-dateBinding': 'App.dateString'
});​
于 2012-07-11T23:27:45.793 回答
1

假设这App.DateView是一个 View 实例,即

App.DateView = Em.View.create({ // notice that create() is called
    endDateString : '7/7/2012' 
});

以下应该有效:

'data-dateBinding' : 'App.DateView.endDateString',

或者,您可以使用(但实际上不需要):

'data-date': function(){
    return App.DateView.get('endDateString');
}.property('App.DateView.endDateString')
于 2012-07-11T22:21:44.987 回答
0

我最终做了类似的事情

'data-date' : function(){
        return App.get('router').get('dateController').get('endDate');
        }.property('App.router.dateConroller.endDateString','App.router.currentState.name').cacheable(),

不知道我的问题是否有更好的解决方案

于 2012-07-16T02:36:26.820 回答