Ember doesn't work with module pattern?

Hi, I’m still working on a tree grid. I got things done as expected. And then I change to use a module pattern. That means, for example, Before I used

DemoApp.TreeGridComponent = Ember.Component.Extend({ ... });

Now I use

  var TreeGrid = (function (module) {
      module.TreeGridComponent = Ember.Component.Extend({ ... });
      return module;
  })(TreeGrid || {});

  DemoApp.TreeGridComponent = TreeGrid.TreeGridComponent;

But it doesn’t work at all. Ember doesn’t seem to recognize that DemoApp.TreeGridComponent is actually extends from Ember.Component. What is weird is I set DemoApp.TreeGridColumnControler the same way now and it’s got called. I must make a subtle mistake and I was too obsessed with it to figure it out. I think a fresh mind may help so I post my question here. The complete code is at https://github.com/kceiw/treegrid-emberjs

Thanks so much.