I can't get one of my directives to work after refactoring my AngularJS code to use the "controller as" syntax.
Old working code (Fiddle):
<div ng-app='MyModule'>
<div ng-controller='DefaultCtrl'>
<input auto-complete ui-items="names" ng-model="selected"/>
selected = {{selected}}
</div>
</div>
JS:
function DefaultCtrl($scope) {
$scope.names = ["john", "bill", "charlie"];
}
angular.module('MyModule', []).directive('autoComplete', function($timeout) {
return function(scope, iElement, iAttrs) {
iElement.autocomplete({
source: scope[iAttrs.uiItems],
select: function() {
$timeout(function() {
iElement.trigger('input');
}, 0);
}
});
};
});
Here is my non-working (autocomplete suggestions do not appear) version with "controller as" (Fiddle):
<div ng-app='MyModule'>
<div ng-controller='DefaultCtrl as ctrl'>
<input auto-complete ui-items="ctrl.names" ng-model="ctrl.selected"/>
selected = {{ctrl.selected}}
</div>
</div>
JS:
function DefaultCtrl() {
this.names = ["john", "bill", "charlie"];
}
angular.module('MyModule', []).directive('autoComplete', function($timeout) {
return function(scope, iElement, iAttrs) {
iElement.autocomplete({
source: scope[iAttrs.uiItems],
select: function() {
$timeout(function() {
iElement.trigger('input');
}, 0);
}
});
};
});