Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回调和AngularJS(ng点击)_Javascript_Angularjs - Fatal编程技术网

Javascript 回调和AngularJS(ng点击)

Javascript 回调和AngularJS(ng点击),javascript,angularjs,Javascript,Angularjs,我有一个按钮像 <div class="button" ng-repeat="event in events" ng-click="selectEvent($index, event, generate)"> Content </div> 函数generate是在JS文件中的某个地方定义的。听起来像Angular没有看到generate回调。确保将其定义到控制器中,如: $scope.generate = function(){/**/} 或 或 听起来

我有一个按钮像

<div class="button" ng-repeat="event in events" 
    ng-click="selectEvent($index, event, generate)">
 Content
</div>

函数generate是在JS文件中的某个地方定义的。

听起来像Angular没有看到generate回调。确保将其定义到控制器中,如:

$scope.generate = function(){/**/} 


听起来Angular没有看到生成回调。确保将其定义到控制器中,如:

$scope.generate = function(){/**/} 

要使其工作,需要在范围内生成。角度模板需要能够看到它。因此,您可以在控制器中定义它:

$scope.generate = generate;
这将指定当前生成函数对Angular可见。

要使其工作,生成需要在范围内。角度模板需要能够看到它。因此,您可以在控制器中定义它:

$scope.generate = generate;
这将指定当前生成函数对Angular可见。

前言:@MaximShoustin的答案是正确的。然而,我不确定它是否解决了这里发生的其他一些问题

另外,我不想让这听起来像是居高临下,这只是建设性的批评。要么接受,要么放弃

回调的连接可能应该由控制器完成,而不是由视图完成。 为什么?

如果回调由视图连接,那么测试控制器就比较困难。 这是商业逻辑。 视图应该只关注显示事物和连接事件。 看起来您正试图在视图中连接业务逻辑。换句话说,当你点击这个东西的时候,调用这个函数,然后在完成后调用这个函数

$scope.doSomething = function($index, event) {
    //do stuff
    $scope.generate();
};

$scope.generate = function (){
    //more stuff.
};
为什么要将控制器作用域变量传递到一个函数中,而该函数是由事件绑定中的求值表达式传递到函数中的?看起来很复杂。 我是专门说这一行的:

callback($scope, $http);
这里的目的是什么?是不是每个事件的生成都会有所不同?为什么必须将$scope和$http传递给它?您应该可以在整个控制器功能中访问这些

你好像想在这里做些疯狂的事。也许我不明白你要解决的问题。

前言:@MaximShoustin的答案是正确的。然而,我不确定它是否解决了这里发生的其他一些问题

另外,我不想让这听起来像是居高临下,这只是建设性的批评。要么接受,要么放弃

回调的连接可能应该由控制器完成,而不是由视图完成。 为什么?

如果回调由视图连接,那么测试控制器就比较困难。 这是商业逻辑。 视图应该只关注显示事物和连接事件。 看起来您正试图在视图中连接业务逻辑。换句话说,当你点击这个东西的时候,调用这个函数,然后在完成后调用这个函数

$scope.doSomething = function($index, event) {
    //do stuff
    $scope.generate();
};

$scope.generate = function (){
    //more stuff.
};
为什么要将控制器作用域变量传递到一个函数中,而该函数是由事件绑定中的求值表达式传递到函数中的?看起来很复杂。 我是专门说这一行的:

callback($scope, $http);
这里的目的是什么?是不是每个事件的生成都会有所不同?为什么必须将$scope和$http传递给它?您应该可以在整个控制器功能中访问这些


你好像想在这里做些疯狂的事。也许我不明白你要解决的问题。

太棒了,谢谢$scope.generate=generate;这是调用范围外函数的一种非常优雅的方式,谢谢。太棒了,谢谢$scope.generate=generate;这是调用范围外函数的一种非常优雅的方式,谢谢。是的,就是这样。谢谢,就这样。感谢$scope回调,$http对于每个事件都是唯一的——实际上它是某种仪表板应用程序,这个回调将使用$scope生成图表,并使用$http提取数据。这也是一种实时应用程序,回调结果取决于所选事件,用户可以随时选择和取消选择事件。您可以通过$index查找generate函数,或者,您可以将generate函数附加到事件对象本身,并在传入后调用它。回调$scope,$http对于每个事件都是唯一的——实际上它是某种仪表板应用程序,这个回调将使用$scope生成图表,并使用$http提取数据。这也是一种实时应用程序,回调结果取决于所选事件,用户可以随时选择和取消选择事件。您可以通过$index查找generate函数,或者,您可以将generate函数附加到事件对象本身,并在传入后调用它。