I've not used the proxy() method before but one way I got around this problem was to keep deferreds out of render() and only call render() inside of the done() callback of the deferred.
- can.Control('MyControl', {}, {
- init: function() {
- var self = this;
- this.options.data.done(function(data) {
- self.deferredData = data;
- self.render();
- });
- },
- render: function() {
- this.element.html(can.view('myView.ejs', this.deferredData));
- }
- });