Javascript 角度控制器可以';看不到指令中声明的函数
以下是html:Javascript 角度控制器可以';看不到指令中声明的函数,javascript,angularjs,Javascript,Angularjs,以下是html: <div class="col-lg-8" ng-controller="usersCtrl"> <scrollable height="180" ts-attach-spinner class="list-group"> </scrollable> </div> 这是控制器: (function () { 'use strict'; angular .module('angle')
<div class="col-lg-8" ng-controller="usersCtrl">
<scrollable height="180" ts-attach-spinner class="list-group">
</scrollable>
</div>
这是控制器:
(function () {
'use strict';
angular
.module('angle')
.controller('usersCtrl', usersCtrl);
usersCtrl.$inject = ['$scope', 'usersSvc'];
function usersCtrl($scope, usersSvc) {
$scope.title = 'Users';
activate();
function activate() {
var promises = [getUsers()];
$scope.spin(promises);
}
function getUsers() {
return usersSvc.getUsers().then(function (data) {
return $scope.users = data;
});
}
}
})();
如您所见,我声明了spin函数并将其附加到ts attach spinner指令中的作用域。然而,当我在控制器中调用$scope.spin
时,我得到了“未定义的不是函数”
感谢您的建议。假设
是另一个指令,这是在创建新的范围吗?如果是这样,那就是你的问题了,这个函数被定义在一个不同的作用域上,而不是与控制器关联的作用域上。另外,我认为控制器可能不应该调用指令中定义的函数。我相信还有很多其他方法,我想到的一个简单方法是控制器$broadcast()
一个事件,并让指令侦听该事件。这将解决手头的问题,好处是不会让你自食其果。你想使用隔离作用域“&”,你可以将你的函数作为属性添加到element@Dylan你能详细说明一下吗?我不明白。这里有一个很好的视频-@SunilD。谢谢这是有道理的。为什么它会朝我自己开枪?
(function () {
'use strict';
angular
.module('angle')
.controller('usersCtrl', usersCtrl);
usersCtrl.$inject = ['$scope', 'usersSvc'];
function usersCtrl($scope, usersSvc) {
$scope.title = 'Users';
activate();
function activate() {
var promises = [getUsers()];
$scope.spin(promises);
}
function getUsers() {
return usersSvc.getUsers().then(function (data) {
return $scope.users = data;
});
}
}
})();