Sharing AngularJS models -


i have angular controller canvascontroller modelling canvas onto "widgets" can placed.

the controller maintains simple array, _currentwidgets, of object literals correspond widgets on canvas. e.g. [ {id: 1} ].

a canvasdirective tied canvascontroller, angular watch placed on array currentwidgets in link function. means canvas re-rendered when widgets added , removed.

the canvas template contains following line render widgets:

<div ng-include="'widget-template'" ng-repeat="widgetmodel in currentwidgets" /> 

and widget template defined follows:

<div ng-controller="widgetcontroller widgetctrl">foo</div> 

it understanding means whenever new item added currentwidgets new instance of widgetcontroller instantiated angular use new widget.

my question - how can share model created in canvascontroller new instance of widgetcontroller instantiated when widget added? or not idiomatic , should instantiate separate model widget inside widgetcontroller?

in case might shared already. see prototypal inheritance. understand widgets should have scopes child canvas directive, right?

a quick solution create method in parent, javascript's prototypal inheritance should lookup method child parent's.

or send events...

the controller's role extend scope, perhaps $rootscope.

that means controller's scope child of $rootscope. can try $rootscope.$broadcast() or scope.$emit(). that's 1 way, sending events.

$emit() send events going upward $rootscope child scope. $broadcast() send events going downward parent descendants.


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -