joh*_*ual 15 javascript angularjs
我正在玩AngularJS,但我收到一条错误消息:Argument 'Controller' is not a function, got undefined这是JSFiddle和HTML代码:
<h2>Hata's Tree-Like Set</h2>
<div ng-app ng-init="N=3;" ng-controller="Controller">
<input type="range" min="1" max="10" step="1" ng-model="N">
<div class="tree"></div>
</div
Run Code Online (Sandbox Code Playgroud)
然后我Controller在JavaScript中定义函数,由于某种原因没有注册.
function Controller($scope){
$scope.$watch("N", function(){ ... });}
Run Code Online (Sandbox Code Playgroud)
小智 12
我有完全相同的错误:argument 'HelloCtrl' is not a function,未定义.
事实证明我的hello.js文件中存在语法错误...数组定义中缺少逗号,里面HelloCtrl().
我添加了逗号,然后一切都开始工作了!
希望这可以帮助.
我有同样的错误...参数'RadioController'不是函数...
我在HTML中引用了控制器错误.我有
data-ng-controller="RadioController"
Run Code Online (Sandbox Code Playgroud)
什么时候应该
data-ng-controller="Radio.RadioController"
Run Code Online (Sandbox Code Playgroud)
('Radio'是Controller所在的模块)
在您的小提琴的选项中,您选择执行您的javasctipt onLoad.使用该onLoad选项,您的javascript将添加到该window.onLoad函数中:
window.onload=function(){
function Controller($scope){
...
}
}
Run Code Online (Sandbox Code Playgroud)
因此,angular无法访问您的代码,因为它位于闭包中.
使用该no wrap选项,您的代码将直接添加到页面中,并且可以通过angular:JSFiddle访问.
您可以浏览源代码以查看其工作原理.
您可以定义一个控制器并一步注册它:
angular.module('myModule').controller('MyCtrl', function($scope) {
$scope.$watch ....
});
Run Code Online (Sandbox Code Playgroud)
如果您希望代码在缩小后能够正常工作,则必须显式指定对 $scope 的依赖关系:
angular.module('myModule').controller('MyCtrl', ['$scope', function(s) {
// you can now name the $scope argument whatever you want
...
}]);
Run Code Online (Sandbox Code Playgroud)