The “difficult-to-debug” issue stem from there’s no definite answer to what is the exactly value at the binding at any given time.
For example…
Your component has a property default to null. You bind a controller property to that property and the controller has a default value set to 0. The binding is a two way binding. Now you tell me, does the controller win and the component’s property get set to 0? Or does the component win and set the controller property to null?
Ember.Component.extend({
prop: null
});
Ember.Controller.extend({
prop: 0
});
{{my-component prop=prop}}
{{prop}} {{! guess what shows up here? }}