2013-03-03 57 views
1

我試圖同步在視圖中顯示的變量,但沒有任何反應。 我創建了一個 JSFiddle http://jsfiddle.net/HKgYn/1/EmberJS視圖綁定變量

<script type="text/x-handlebars" data-template-name="photo_album"> 
<!-- I want view.cover to be updated automatically but nothing happens? --> 
My Cover: {{ view.cover }} 
</script> 


App.PhotoAlbumController = Ember.ObjectController.extend({ 
    cover: '/no-image.jpg' 
}); 

App.PhotoAlbumView = Ember.View.extend({ 
    coverBinding: 'App.photoAlbumController.cover' 
}); 

App.AlbumController = Ember.ObjectController.extend({ 
    needs: ['photoAlbum'] 
}); 

App.AlbumRoute = Ember.Route.extend({ 
    setupController: function(controller, model) { 
    var pac = controller.get('controllers.photoAlbum'); 
    pac.set('cover', model.get('cover_url')); 
    }, 
    model: function(params) { 
    return App.Album.find(params.album_id); 
    } 
}); 

我不知道什麼我丟失或我在做什麼錯了,有的幫助是極大的希望。

謝謝。

回答

2

主要問題是在PhotoAlbumView內綁定到photoAlbumController的路徑。

將其更改爲:

App.PhotoAlbumView = Ember.View.extend({ 
    coverBinding: 'controller.controllers.photoAlbum.cover' 
}); 

Here it is worked out in a jsfiddle

這就是說,我會提出一個更簡單的結構。考慮以下幾點:

App.Album = DS.Model.extend({ 
    coverUrl: DS.attr('string') 
}); 

App.PhotoAlbumView = Ember.View.extend({ 
    templateName: 'photo-album', 
    coverUrl: null 
}); 

App.Router.map(function() { 
    this.resource('album', { path: '/album/:album_id' }); 
}); 

隨着模板:

<script type="text/x-handlebars" data-template-name="album"> 
    <h1>{{name}}</h1> 
    {{view App.PhotoAlbumView coverUrlBinding="coverUrl"}} 
</script> 

<script type="text/x-handlebars" data-template-name="photo-album"> 
    <img {{bindAttr src="view.coverUrl"}} /> 
</script> 

這就是你所需要的,你可以果汁與您所需要的任何額外的功能相冊視圖。

Here's the corresponding jsfiddle