我正在使用Salesforce Visualforce模板和组件,我已嵌入以下代码,并且我正在尝试修复该错误。
我确实在这里检查了类似的链接:AngularJS error: [ng:areq] Argument 'TestController' is not a function, got undefined
<div xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ng-app="vsTestApp">
...
<c:TestController />
<c:TestTemplate />
...
</div>
TestController
<apex:component >
<script>
(function() {
'use strict';
angular
.module('vsTestApp', []);
}());
(function() {
'use strict';
angular
.module('vsTestApp')
.controller('testController', testController);
testController.$inject = ['$filter', '$window' ,'$rootScope' ];
function testController($filter, $window , $rootScope) {
//Some Logic's Here
function print() {
$window.print();
}
}
}());
</script>
</apex:component>
TestTemplate的代码
<apex:component >
<script type="text/ng-template" id="vlcCompareModal.html">
<a clasS="btn btn-default" ng-controller="testController as smallGroup" ng-click="smallGroup.print()">Print</a>
</script>
</apex:component>
我收到的错误是说参数&#39; testController&#39;不是一个 链接:https://docs.angularjs.org/error/ng/areq?p0=testController&p1=not%20a
答案 0 :(得分:1)
尝试在控制器功能后定义控制器:
(function() {
'use strict';
testController.$inject = ['$filter', '$window' ,'$rootScope'];
function testController($filter, $window , $rootScope) {
//Some Logic's Here
function print() {
$window.print();
}
}
angular.module('vsTestApp')
.controller('testController', testController);
}());
答案 1 :(得分:0)
这是偏离主题但这是一团糟。
为什么你根本不这样做:
.controller('testcontroller', ['$filter', $window', '$rootscope', function($filter, $windwo, $rootscope) {
}]);
对于查看代码的其他人来说,阅读和理解更加简洁易懂。
答案 2 :(得分:0)
不应该是<c:testController />
而不是<c:TestController />
吗?