组件不解析 $scope 的注入(angular 1.3.16)
Component doesn't resolve injection of $scope (angular 1.3.16)
我遇到了一个非常奇怪的错误。我正在做一个我们使用 John Papa's AngularJS 风格指南的项目。
我有以下组件文件 my-profile.component.js
,附加到 app.mymodule
我的-profile.component.js
(function() {
'use strict';
angular
.module('app.mymodule')
.component('myProfile', { })
.controller('MyProfileController', myProfileController);
/*@ngInject*/
function myProfileController($scope) {
...
}
})();
该组件在我的视图文件中使用呈现。
app.mymodule
定义在 mymodule.module.js
mymodule.module.js
(function () {
'use strict';
angular
.module('app.mymodule', []);
})();
而app
是在app.modules.js
中定义的,其中app.mymodule
设置为应用依赖
app.modules.js
(function() {
'use strict';
angular
.module('app', [
...
'app.mymodule'
]);
})();
my-profile.component.js
编译成如下代码
my-profile.component.js(编译)
(function() {
'use strict';
angular
.module('app.mymodule')
.component('myProfile', { })
.controller('MyProfileController', myProfileController);
myProfileController.$inject = ['$scope'];
function myProfileController($scope) {
...
}
})();
但出于某种原因,angular 未能注入 $scope
服务,或我尝试注入的任何其他服务。 It produces the following error:
Error: [$injector:unpr] Unknown provider: 1FilterProvider <- 1Filter
http://errors.angularjs.org/1.3.16/$injector/unpr?p0=1FilterProvider%20%3C-%201Filter
at REGEX_STRING_REGEXP (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7eNaNbundles%fjs%fvendor:63:12)
at /layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4031:19
at Object.getService [as get] (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4178:39)
at /layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4036:45
at Object.getService [as get] (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4178:39)
at $get [as $filter] (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:16705:24)
at Parser.filter (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12234:19)
at Parser.filterChain (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12228:19)
at Parser.primary (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12079:22)
at Parser.unary (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12374:19)
我在同一个文件夹中有另一个组件,附加到同一个模块,我可以轻松地注入任何服务。它看起来如下:
(function () {
'use strict';
angular
.module('app.mymodule')
.component('loginView', { })
.controller('LoginViewController', loginViewController);
/*@ngInject*/
function loginViewController($scope, $location) {
...
}
})();
我真的不知道我做错了什么。我已经拼写检查,双重检查,在组件上重新开始,试图在控制器上手动 $inject $scope,但无济于事。
有人知道这里发生了什么吗? :)
编辑
正如 rolandjitsu 所指出的,这是我的视图文件中的一个问题。我错误地使用了 ng-pattern
,但被我自己无法解释 angular 控制台错误和 angular 文档中的 'mildly' 误导性错误描述误导了。
是的,您似乎缺少一个名为 1Filter
的服务提供商。可能缺少模块或缺少某些文件?
注:与$scope
无关,不应因此失败。
我遇到了一个非常奇怪的错误。我正在做一个我们使用 John Papa's AngularJS 风格指南的项目。
我有以下组件文件 my-profile.component.js
,附加到 app.mymodule
我的-profile.component.js
(function() {
'use strict';
angular
.module('app.mymodule')
.component('myProfile', { })
.controller('MyProfileController', myProfileController);
/*@ngInject*/
function myProfileController($scope) {
...
}
})();
该组件在我的视图文件中使用呈现。
app.mymodule
定义在 mymodule.module.js
mymodule.module.js
(function () {
'use strict';
angular
.module('app.mymodule', []);
})();
而app
是在app.modules.js
中定义的,其中app.mymodule
设置为应用依赖
app.modules.js
(function() {
'use strict';
angular
.module('app', [
...
'app.mymodule'
]);
})();
my-profile.component.js
编译成如下代码
my-profile.component.js(编译)
(function() {
'use strict';
angular
.module('app.mymodule')
.component('myProfile', { })
.controller('MyProfileController', myProfileController);
myProfileController.$inject = ['$scope'];
function myProfileController($scope) {
...
}
})();
但出于某种原因,angular 未能注入 $scope
服务,或我尝试注入的任何其他服务。 It produces the following error:
Error: [$injector:unpr] Unknown provider: 1FilterProvider <- 1Filter
http://errors.angularjs.org/1.3.16/$injector/unpr?p0=1FilterProvider%20%3C-%201Filter
at REGEX_STRING_REGEXP (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7eNaNbundles%fjs%fvendor:63:12)
at /layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4031:19
at Object.getService [as get] (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4178:39)
at /layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4036:45
at Object.getService [as get] (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:4178:39)
at $get [as $filter] (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:16705:24)
at Parser.filter (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12234:19)
at Parser.filterChain (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12228:19)
at Parser.primary (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12079:22)
at Parser.unary (/layout/js/vendor/angularjs-1.3.16/angular.js?bundleVirtualPath=%7e%fbundles%fjs%fvendor:12374:19)
我在同一个文件夹中有另一个组件,附加到同一个模块,我可以轻松地注入任何服务。它看起来如下:
(function () {
'use strict';
angular
.module('app.mymodule')
.component('loginView', { })
.controller('LoginViewController', loginViewController);
/*@ngInject*/
function loginViewController($scope, $location) {
...
}
})();
我真的不知道我做错了什么。我已经拼写检查,双重检查,在组件上重新开始,试图在控制器上手动 $inject $scope,但无济于事。
有人知道这里发生了什么吗? :)
编辑
正如 rolandjitsu 所指出的,这是我的视图文件中的一个问题。我错误地使用了 ng-pattern
,但被我自己无法解释 angular 控制台错误和 angular 文档中的 'mildly' 误导性错误描述误导了。
是的,您似乎缺少一个名为 1Filter
的服务提供商。可能缺少模块或缺少某些文件?
注:与$scope
无关,不应因此失败。