That's right, ng-change requires an ng-model to be bound with. But if you set ng-model="data", this means that when you select a value in your dropdown list, the ng-change event will be fired and it will try to override 'data' like this:
data = data.rows[this.value].dimensions.select()
Which means that you will lose your original 'data' model.
Try assigning the ng-model to a new variable with ngInit. Something like (didn't tried it though):