我遇到了角度JS控制器功能的问题。我有一个控制器,在该控制器中,我有一堆函数,这些函数是从包含HTTP get和post请求的服务调用的
。具体来说,当我尝试编写时,我的问题是在控制器内部:
$scope.functionName = function()
{
//some code
}
我的函数根本没有被调用。当我执行以下操作时,我的函数被调用,但其余函数的范围未定义。
app.controller("ControllerName", function ($scope, ServiceName) {
getAll();
getAppKey();
getAppDefaults();
function getAll(){//some code}
function getAppKey(){//some code}
function AppDefaults(){//some code
})
我不确定我哪里出错了。我非常感谢任何可以帮助我解决这个问题的人的帮助。
我认为您正在用$scope定义函数并在没有$scope的情况下调用函数。此代码将起作用:
app.controller("ControllerName", function ($scope, ServiceName) {
$scope.getAll = function{
console.log("function called");
}
$scope.getAll();
})
并且此代码将无法按预期工作:
app.controller("ControllerName", function ($scope, ServiceName) {
$scope.getAll = function{
console.log("function called");
}
getAll();
})
'...从服务调用的函数堆...' ?
不能从服务中的控制器调用函数。您可以做的是在控制器中使用服务中的函数。
如果你想使用控制器内部服务的方法,首先注入服务(你已经这样做了(,
然后称之为:
ServiceName.getAll((;ServiceName.getAppKey((;...等。
如果你想从控制器使用这个函数,让另一个服务/工厂把这个函数放在那个服务中,在服务中注入service2,你可以再次使用它们,就像:
ServiceName2.getAll((;ServiceName2.getAppKey((;
我不确定你想说什么,梅比?此代码有效:
app.controller('MainCtrl', function($scope) {
$scope.submit = function() {
alert("called.........");
}
defaultFunction = function() {
alert("defaultFunction called.........");
}
defaultFunction();
});
$scope 当您想在视图中使用时添加,如果需要在控制器中使用它,则无需$scope
您可以更改 http://jsfiddle.net/B9RsQ/45/进行测试