我对Angularjs很新,我正在努力解决这个问题。我正在浏览教程here,但我无法找到我出错的地方。我有一个像这样的模块:
var myMod = angular.module( "modTest", [ 'angular-counter', 'ngDialog' ] );
myMod.factory( "myService", [ "$http", "$log", myService ] )
.controller( "myCtrl", [ "$myvar", myCtrl] );
console.log("test 1");
然后我有一个控件在代码中定义一个更高的函数,如下所示:
myCtrl = function( $myVar )
{
console.log("test 2");
}
根据我的理解,当我执行myMod.controller时,它应该“运行”我上面描述的功能并将“test 2”打印到控制台。我在每个页面上都运行了第一个代码块,并且“test 1”确实会在每个页面上打印到控制台。
然而,在几页上,“测试1”被打印但不是“测试2”。当我使用Chrome开发工具尝试调试问题时,我发现我总是在myCtrl = function( $myVar )
行上遇到断点,但我并不总是进入导致问题的函数。
我之前从未遇到过这样的问题,而且我对它为何会发生这件事感到非常困惑。如果我在创建myMod变量并在运行.factory和.controller之后检查它,我会发现在两种情况下它都会被正确填充(即,就我所知,它并没有归零或类似的东西。)
有人可以告诉我每次尝试进入myCtrl可以采取哪些步骤。或者,换句话说,如何在每个页面上打印“测试2”?
答案 0 :(得分:0)
var app = angular.module('modTest', []);
app.service('myService',[])
.controller('MainCtrl', ['$scope', myCtrl]);
function myCtrl($scope) {
$scope.name = 'World';
}
使用此代码可以帮助您,当您在上面声明myCtrl时未定义myCtrl。 注意:从未将$用于用户定义的变量。