在 ng 选项之后完成控制器内部的回调函数
callback function inside of controller finishing after ng-options
我使用 d3 和回调函数解析我的数据,并使用选择标签和 ng 选项来创建下拉列表。问题是回调函数在页面加载之前没有完成。
那么,如何解决在控制器内部使用回调函数的问题呢?
为了进一步澄清,如果我在回调函数之外有一个数据集,它可以工作并完美地填充我的 ng 选项。
您首先如何路由到页面?你可能想看看UI-Router - 特别是它执行回调函数,解决承诺并将这些决议注入范围的能力,甚至在加载视图之前。
您需要提供一个代码示例,以便获得很有可能正确的特定答案。如果我们无法准确看到您在做什么,那么我们将无法告诉您问题所在。
也就是说,我怀疑您正在使用 d3.csv 或 d3.json(或类似的东西)来加载外部文件。这些函数使用异步回调,而不是同步回调,后者可能不会引起此类问题。我假设您的回调正在作用域上填充您的 ng 选项模型。问题是它在 Angular 上下文之外执行,因此不会触发更新周期。
解决方案是在 scope.$apply() 调用(正确的方式)中调用回调逻辑,或者在回调结束时调用 scope.$digest()。
d3.csv(url).get(function(error, rows) {
scope.$apply(function(scope) {
// Your logic that updates the scope here.
});
}
这应该会导致您的ng选项得到正确更新。如果这不起作用,请提供一个使用 Plukr 或 JSFiddle 之类的工作示例。
相关文章:
- 为什么(如何)'这'从函数内部调用回调时发生更改
- 正在保存JavaScript内部回调函数中的值
- 在另一个Find(..)的回调内部查找,如何逃离回调地狱
- 从回调内部填充对象
- javascript,将参数传递给函数内部的闭包中的回调
- 从内部回调的可见性
- Javascript破坏了回调函数内部的for循环
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- NodeJS fs.readdr-将回调内部作为对象返回
- 可以't从回调函数内部访问响应
- Meteor.methods:从内部回调将数据返回给客户端
- jQuery widget 和内部回调
- 保留“;这个“;内部回调函数
- 正在从内部回调中分配变量
- AJAX内部回调成功
- 如何将内部回调的结果传递到其父函数
- node/redis中的JavaScript控制流:从内部回调返回
- 这个内部回调函数
- jQuery调用插件方法从内部回调函数
- 最简单的是什么?从javascript内部回调中访问外部this的最短方式