gpt4 book ai didi

javascript - AngularJS : Update directive scope after successful HTTP request

转载 作者:行者123 更新时间:2023-11-28 00:40:24 26 4
gpt4 key购买 nike

我正在创建一个指令,根据 Controller 函数中 http 请求的响应来显示具有滑动效果的成功/失败消息。下面是基本实现。

<slidemsg msg="rmsg" type="rtype"></slidemsg>

我的指令:

app.directive('slidemsg',function(){
return {restrict : 'EA',
scope:{msg:'=',type:'='},
templateUrl:'views/slideMsg.html',
controller:function($scope){
console.log($scope.msg);
console.log($scope.type);
}}})

HTTP 请求:

app.controller('empController',function($scope,employeeService,$window,$timeout){ 
$scope.deleteUser=function(id)
{
var deleteUser = $window.confirm('Are you absolutely sure you want to delete?');
if (deleteUser) {
employeeService.deleteEmployee(id).success(function(response){
if(response.success)
{ console.log('Deleted');
$scope.rmsg="Successfully Deleted";
$scope.rtype=true;
}
}
}});

当我的页面第一次加载时,指令会自动调用加载模板并将 rmsg 和 rtype 控制台为 未定义。但是在成功的 http 请求之后,当我在 success 函数中设置 rmsg 和 rtype 时,指令不会得到我也尝试使用 $apply 但它抛出错误 [$rootScope:inprog]。我的做法正确吗?

最佳答案

代码应该可以工作。

您的console.log s 不应该,因为它们在指令初始化时被调用一次。所以,就像你说的,首先参数是 undefined这就是您在控制台中看到的内容。

当您在成功响应后设置变量时,Angular 知道要更新指令。例如,如果您有 <div ng-if="rtype">Test</div>然后它会正确显示。但控制台不会在您的 Controller 声明中被召回。

关于javascript - AngularJS : Update directive scope after successful HTTP request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com