2014-06-28 101 views
0

這是一個非常基本的問題,我一直試圖找出無濟於事。我將Google Maps與EmberJS集成在一起,並嘗試對IndexController中由另一個視圖設置的屬性執行classNameBindings。值得到正確更新,但不會觸發。我試過屬性('controller.panoEnabled')和.observes('controller.panoEnabled')。既不火...有任何想法?非常感謝幫助,我對這個基本問題表示歉意。EmberJS - classNameBindings瓦特/觀察和財產不更新/燒

JSBin:http://emberjs.jsbin.com/degivubu/4/edit

回答

1

我勸isEnabled:Em.computed.alias('controller.panoEnabled')由鄧肯·沃克提到的第二個選項,與binding後綴屬性已'輕微'棄用(https://github.com/emberjs/ember.js/issues/1164#issuecomment-23200023)。

App.PanoView = Ember.View.extend({ 
    classNames: ['pano'], 
    classNameBindings: ['isEnabled'], 
    /*isEnabled:function(){ 
    return this.get('controller.panoEnabled'); 
    }.property('controller.panoEnabled')*/ 
    isEnabled:Em.computed.alias('controller.panoEnabled') 
}); 

而且它是需要解決的相關代碼,谷歌地圖this上下文如下圖所示

http://emberjs.jsbin.com/vesiyana/1/edit

.... 
var self = this; 
    google.maps.event.addListener(marker, 'click', function(){ 
     self.set('controller.panoEnabled',true); 
     console.log(self.get('controller.panoEnabled')); }); 
    google.maps.event.addListener(map, 'click', function(){ 
     self.set('controller.panoEnabled', false); 
     console.log(self.get('controller.panoEnabled')); }); 
.... 
+0

非常感謝!這絕對是那個/這個背景。我不能相信我錯過了,因爲它在Listener方法中。太棒了,不能夠感謝你...... –

0

嘗試:

App.PanoView = Ember.View.extend({ 
    classNames: ['pano'], 
    classNameBindings: ['isEnabled'], 
    isEnabled: function(){ 
    return this.get('controller.panoEnabled'); 
    }.property('controller.panoEnabled'), 
}); 

App.PanoView = Ember.View.extend({ 
    classNames: ['pano'], 
    classNameBindings: ['isEnabled'], 
    isEnabledBinding: 'App.IndexController.panoEnabled', 
}); 
+0

我都試過也不更新。但解決方案melc表示與/這固定它!這是最初的問題。但是,謝謝! –

+0

Np。很高興你修好了它!一定要將他/她的答案標記爲已接受。 :) –