从内部函数更改 AngularJS 范围变量
Changing AngularJS scope variables from an inside function
嗨,我是 Angular 的新手,我正在尝试从控制器内部的函数更改(或设置)范围变量。这是我的代码:
$.ajax({
type: "POST",
url: URL,
data: param = "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
$scope.modalStatus = 'success';
$scope.modalIcon = 'check';
$scope.modalMessage = 'Invoice Saved!';
showNotification();
}
function errorFunc() {
alert('error');
}
$scope.modalStatus、$scope.modalIcon 和 $scope.modalMessage 是之前在控制器开头设置的作用域变量。我如何在那个成功Func方法中更改它们,请帮助。
更改成功回调:
function successFunc(data, status) {
$scope.modalStatus = 'success';
$scope.modalIcon = 'check';
$scope.modalMessage = 'Invoice Saved!';
showNotification();
$scope.$apply();
}
此外,在一个应用程序中使用jQuery和Angular也是一种不好的做法。Angular 提供$http fo 请求。
为什么使用Jquery $ajax而AngularJs提供$http。
实际上,AngularJs 中有一个内部机制来应用更改,称之为$digest。当你使用JQuery时,它超出了angularJs的范围,它不应用$digest机制。
所以在这种情况下,通过在 successFunc 函数中使用以下应用方法手动应用$digest。
$scope.$apply(function() {
$scope.modalStatus = 'success';
$scope.modalIcon = 'check';
$scope.modalMessage = 'Invoice Saved!';
});
此链接可以帮助您了解有关$apply和$digest的更多信息http://www.panda-os.com/2015/01/angularjs-apply-digest-and-evalasync/#.Vq1Z2lN95R0
相关文章:
- ngDialog-弹出窗口未更新范围变量
- AngularJS范围变量Unwatch
- 将外部控制器的范围变量设置为角度
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- 具有范围变量的控制器不工作
- 范围变量返回长度错误
- 将 NodeJS 模块范围变量作为对象访问
- Angularjs 更新 setTimeout 中的范围变量不起作用
- 递归承诺调用 - 内存范围变量问题
- AngularJS:从指令设置范围变量
- Angularjs:访问范围变量数组并计算平均值
- 范围变量更新,但不更新视图
- 从html调用angularjs控制器中的一个函数,但未定义范围变量
- 如何在编辑范围变量时(暂时)避免摘要循环
- 防止Angular范围变量通过引用自动绑定到服务私有成员
- 使用 AngularJS 从指令设置范围变量
- 集合回调忽略范围变量
- 使用forEach修改角度范围变量
- 因果报应测试中未定义的预期范围变量