angulaire 1,6Être objet binded à l'intérieur contrôleur de composants
Je ne comprends pas pourquoi je n'ai pas accès à l'binded self.widget
objet dans mon contrôleur composant. Le console.log(self.widget);
imprime undefined
. Mais j'ai accès à l'objet widget
dans le modèle via $ctrl.widget
, le widget fonctionne.
Et je vois l'objet dans la console du navigateur lorsque je angular.element($0).scope().$ctrl
Composant:
import template from './templates/clock-widget.template.html';
import controller from './clock-widget.controller';
const clockWidget = {
bindings: {
widget: '<'
},
controller,
template
};
export default clockWidget;
contrôleur du composant:
import controller from './clock-widget.settings.controller.js';
import template from './templates/clock-widget.settings.template.html';
import 'angular-clock/dist/angular-clock.css';
import './style.css';
import timezones from './timezones';
const injectParams = ['$scope', '$timeout', '$uibModal'];
const ClockWidgetCtrl = function($scope, $timeout, $uibModal) {
const self = this;
self.gmtOffset = 2;
console.log(self.widget);
self.openSettings = function() {
$uibModal.open({
scope: $scope,
controllerAs: '$ctrl',
controller,
template,
resolve: {
widget: function() {
return self.widget;
}
}
});
};
};
ClockWidgetCtrl.$inject = injectParams;
export default ClockWidgetCtrl;
modèle de composant:
<div class="box clock-widget">
<div class="box-header">
<h3>{{ $ctrl.widget.title }}</h3>
<div class="box-header-btns pull-right">
<a title="settings" ng-click="$ctrl.openSettings(widget)"><i class="glyphicon glyphicon-cog"></i></a>
<a title="Remove widget" ng-click="$ctrl.remove(widget)"><i class="glyphicon glyphicon-trash"></i></a>
</div>
</div> <!-- END box-header -->
<div class="box-content">
<b>{{$ctrl.widget.config.location.split('/')[1]}}</b>
<ds-widget-clock gmt-offset="$ctrl.gmtOffset" show-analog show-gmt-info></ds-widget-clock>
</div> <!-- END box-content -->
</div> <!-- END box -->