【发布时间】:2015-07-07 23:28:30
【问题描述】:
使用 Angular,我有一个功能,当连接到视图中的按钮(ng-click)时,可以按预期运行。例如,这会在点击时运行并执行我的函数:
<button ng-click="foo()">add Foo!</button>
但是,我想绕过必须单击此按钮来运行该功能。所以在我的控制器中我添加了:
foo();
这并没有运行我的函数,也没有在视图中使用 ng-init,因此:
<div ng-init="foo()"></div>
我确定我的代码没有被执行,因为它是为写入数据库而设计的。单击时,我在服务器的控制台日志中看到了预期的结果,并且数据被写入数据库。使用上述函数,服务器的控制台日志没有收到响应,也没有新的数据写入数据库。
编辑: 这是我的函数,它向我的服务器发送一个帖子:
$scope.foo = function() {
var SOName = $scope.bar.SO;
var len = $scope.bar.FP.length;
for(x=0;x<len;x++){
$http.post('/track', {"track":$scope.bar.FP[x].name, "project":$scope.bar.SO}).success(function(response) {
console.log(response);
});
};};
在哪里
$scope.bar =
{"SO":"Do xx","QT":0,"RG":[{"name":"yy","LOE":0,"QT":0}],"FP":[{"name":"zz","LOE":3,"QT":0},{"name":"bb","LOE":1,"QT":0},{"name":"ff","LOE":1,"QT":0}],"VP":[],"QC":[{"name":"ww","LOE":15,"QT":0}],"ED":[{"name":"ee","LOE":0,"QT":0}]}
在尝试手动运行该函数时,我将$scope.foo更改为var foo并添加了foo();以尝试运行该函数。
编辑:
尝试在视图中简单地调用{{foo()}} - 虽然这非常挑剔。该页面要么在加载时挂起,要么在同一件事的帖子后反复发送帖子。
【问题讨论】:
-
让我们看看函数。您知道它没有运行的理由并不完全是万无一失的。如果函数中的变量之一未在全局范围内定义等,它可以运行函数但永远不会访问您的服务器/数据库
-
在您的控制器中,您在
$scope上定义了一个函数foo?那么你也需要这样称呼它$scope.foo() -
@BettySt 好点。忘了提到从控制器运行该命令时我确实将其更改为
var foo。当我在电脑前时会更新我的帖子。 -
@PatrickMurphy - 刚刚将该功能添加到我的原始帖子中。
-
你的函数中变量
x在哪里定义?尝试将 foo() 的第一行设置为console.log('entered foo function');,以查看在尝试调用它时是否可以确保该函数没有运行
标签: javascript angularjs node.js