【发布时间】:2018-03-05 09:09:19
【问题描述】:
Angular 1.6
我不明白为什么我无法访问组件控制器中绑定的self.widget 对象。 console.log(self.widget); 打印 undefined。但是我可以通过$ctrl.widget 访问模板中的widget 对象,该小部件可以工作。
当我执行angular.element($0).scope().$ctrl 时,我会在浏览器控制台中看到该对象
组件:
import template from './templates/clock-widget.template.html';
import controller from './clock-widget.controller';
const clockWidget = {
bindings: {
widget: '<'
},
controller,
template
};
export default clockWidget;
组件的控制器:
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;
组件模板:
<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 -->
【问题讨论】:
标签: angularjs angular-components