element.on($destroy) 显示元素未在 angular 中定义
element.on($destroy) shows element is not defined in angular
我试图在更改应用程序的路由或状态时取消指令中的 $interval 事件。我发现这段代码可以在销毁事件中起作用。
但是这个returns我的元素没有定义。我是否必须在控制器中注入任何服务或指令?
element.on('$destroy', function() {
console.log("cancelling interval");
$interval.cancel(promise);
});
错误:
ReferenceError: element is not defined
at new Controller (http://localhost:port/src/controller.js
at invoke (http://localhost:port/bower_components/angular/angular.js:4182:17)
at Object.instantiate (http://localhost:port/bower_components/angular/angular.js:4190:27)
at http://localhost:port/bower_components/angular/angular.js:8453:28
at $interpolate.compile (http://localhost:port/bower_components/angular-ui-router/release/angular-ui-router.js:3897:28)
at invokeLinkFn (http://localhost:port/bower_components/angular/angular.js:8217:9)
at nodeLinkFn (http://localhost:port/bower_components/angular/angular.js:7726:11)
at compositeLinkFn (http://localhost:port/bower_components/angular/angular.js:7075:13)
提前致谢
代码很长,所以在调用的地方发布截图。
更新:
(function ()
{
'use strict';
angular .module('app')
.controller('Controller', Controller);
Controller.$inject = ['Service', '$modal', '$interval', '$scope'];
function Controller(Service, $modal, $interval, $scope)
{
console.log("Beginning");
var ctrl = this;
$scope.headerName= "Header Name";
ctrl.selected = {};
setupData();
var promise = $interval(setupData, 1000000);
$scope.on('$destroy', function()
{
$interval.cancel(promise);
});
使用$scope.$on('$destroy'..)
,新路由初始化时将移除间隔计时器:
$scope.$on('$destroy', function() {
console.log("cancelling interval");
$interval.cancel(promise);
});
在上面的评论中,尝试使用 $scope.on()
是不正确的,因为所有 angular 内部事件方法都使用 $
前缀
我试图在更改应用程序的路由或状态时取消指令中的 $interval 事件。我发现这段代码可以在销毁事件中起作用。
但是这个returns我的元素没有定义。我是否必须在控制器中注入任何服务或指令?
element.on('$destroy', function() {
console.log("cancelling interval");
$interval.cancel(promise);
});
错误:
ReferenceError: element is not defined
at new Controller (http://localhost:port/src/controller.js
at invoke (http://localhost:port/bower_components/angular/angular.js:4182:17)
at Object.instantiate (http://localhost:port/bower_components/angular/angular.js:4190:27)
at http://localhost:port/bower_components/angular/angular.js:8453:28
at $interpolate.compile (http://localhost:port/bower_components/angular-ui-router/release/angular-ui-router.js:3897:28)
at invokeLinkFn (http://localhost:port/bower_components/angular/angular.js:8217:9)
at nodeLinkFn (http://localhost:port/bower_components/angular/angular.js:7726:11)
at compositeLinkFn (http://localhost:port/bower_components/angular/angular.js:7075:13)
提前致谢 代码很长,所以在调用的地方发布截图。 更新:
(function ()
{
'use strict';
angular .module('app')
.controller('Controller', Controller);
Controller.$inject = ['Service', '$modal', '$interval', '$scope'];
function Controller(Service, $modal, $interval, $scope)
{
console.log("Beginning");
var ctrl = this;
$scope.headerName= "Header Name";
ctrl.selected = {};
setupData();
var promise = $interval(setupData, 1000000);
$scope.on('$destroy', function()
{
$interval.cancel(promise);
});
使用$scope.$on('$destroy'..)
,新路由初始化时将移除间隔计时器:
$scope.$on('$destroy', function() {
console.log("cancelling interval");
$interval.cancel(promise);
});
在上面的评论中,尝试使用 $scope.on()
是不正确的,因为所有 angular 内部事件方法都使用 $
前缀