控制器函数作为回调执行
Controller function executes as callback
我将html的部分(div
)更改为指令,在更改之前,我的html看起来如下:
<div ng-controller="SearchCtrl as search">
<div id="firstDirective">
.
.
.
<div>
<div id="secondDirective">
.
.
.
<div>
</div>
其与相关联的控制器一起工作良好。我计划将html更改为:
<div ng-controller="SearchCtrl as search">
<first-directive>
<second-directive>
</div>
相应的angular.directive
定义具有独立的作用域(return {..., scope: {attr: '=attr', func: '&func'},...}
),并且属性和函数从控制器传递。在将第一个div
更改为指令(first-directive
)之后,它仍然工作良好。但是,在创建了second-directive
并替换了相应的div之后,该部分就不再工作了(第一部分仍然工作)。这是我的控制器:
app.controller('SearchCtrl', ['$scope', '$http', function($scope, $http){
var self = this;
self.data = {};
self.clickSearch = function() {
self.retrieve(param1, param2);
.
.
.
console.log('clickSearch log, data: ', self.data);
}
// retrieve is reused, called directly in some parts of html,
// thus I attached it as a controller function
self.retrieve = function(param1, param2) {
// some $http.get and assign to data
.
.
.
console.log('retrieve log, data:', self.data);
}
// some other functions, some are passed to the directives
.
.
.
});
然而,日志显示:
[LOG]clickSearch log, data: {}
[LOG]retrieve log, data: {...//some assigned values}
看起来clickSearch函数首先完成,然后retrieve
函数稍后执行,因此我得到了空数据。我的背景是Java,所以我不完全理解JavaScript中回调的概念,我怀疑这就是这里发生的事情。我该怎么补救?谢谢
试试这个
app.controller('SearchCtrl', ['$scope', '$http', function($scope, $http){
var self = this;
self.data = {};
self.clickSearch = function() {
self.retrieve(param1, param2, function(data){
.
.
.
console.log('clickSearch log, data: ', data);
console.log('clickSearch log, data: ', self.data);
});
}
// retrieve is reused, called directly in some parts of html,
// thus I attached it as a controller function
self.retrieve = function(param1, param2, callback) {
// some $http.get and assign to data
.
.
.
console.log('retrieve log, data:', self.data);
callback(data);//$http.get{url:url,success:callback}
}
// some other functions, some are passed to the directives
.
.
.
});
相关文章:
- 如何在回调函数中执行流
- 如何在`window.open`之后执行回调
- 等待回调函数执行
- 带有Spring的$.getJSON未执行回调
- bookmarklet中的jQuery.getScript()进行回调,但没有成功执行插件
- Dojo AMD加载程序执行定义具有空/缺失依赖项的回调
- 不同'单击'不同脚本中的回调:我可以控制执行顺序吗
- TypeError:执行回调时,回调不是函数
- Javascript:对回调创建的对象执行方法
- AJAX成功回调-执行javascript时出现问题
- nodeJS中的承诺/承诺中的回调/执行顺序是不对的
- 主干:中止以前的路由器回调执行
- 控制器函数作为回调执行
- 函数/回调执行可以被外部调用中断吗?
- React setState回调执行序列
- 一个关于nodejs回调执行顺序问题的例子,我不能理解
- 禁用返回按钮,直到回调执行
- 回调函数内部声明的变量是否保留在内存中,还是在回调执行结束时销毁?
- 在javascript中,使用回调执行多个异步函数的最佳实践是什么?
- Javascript中的回调执行序列,从IndexeddB检索