如何使用更新的$scope重新加载角度控制器

How to reload an angular controller with the updated $scope?

本文关键字:加载 控制器 新加载 更新 何使用 scope      更新时间:2023-09-26

我的问题是我需要将"det"值应用于控制器并重新加载它。不管怎样,别介意,先继续读,这样你就会理解我的问题了。

我下面有这个控制器。在第一次加载时,xxx将不存在于对象中,然后det值将为null。因此,预计控制器的服务将出现一个错误,告知找不到它(参见下面的控制器代码)

然而,当我点击页面上的一个按钮(按钮html代码不在这里,我认为没有必要)时,它会填充对象,我希望重新加载控制器,这样我就会看到预期的输出。

下面的HTML是加载控制器的人,我期望的是data ng model="{{$parent.$root.ParentItems['xxx'].xxx}}"将更新控制器中的xxx值。事实上,这是因为我正在使用"<span>{$parent.$root.ParentItems['xxx'].detnumber}}</span>"来测试它。

现在,再一次,我的问题是,我需要将"det"值应用于控制器并重新加载它。我想的是创建一个新的控制器,但我只会重复代码。


//html

<div data-ng-switch-when="thisIsIt" ControllerOne data-ng-model="{{$parent.$root.ParentItems['xxx'].xxx}}"></div>
<span>{{$parent.$root.ParentItems['xxx'].xxx}}</span>

//属性控制器一

controller: function ($scope, $element, $http) {
    function par() {               
       var xxx= null;
       xxx = $scope.$parent.$root.ParentItems['xxx'].xxx;
       var det = { xxx: xxx};              
       return det;
    }

$http.post('/api/values/entries/GoHere', par()).success(function (salData) {
     var buildSHGraph = function (shData) {
        //code code codes...
     }
     $scope.Array1 = [];
     angular.forEach(salData, function (evt) {
        //Code Code Codes
     });
     buildSHGraph($scope.Array1);
});
}

我认为你可以使用$rootScope并将你的值传递给它。然后你的应用程序可以全局访问该值。

当您的值从ajax下载时,scope.html将被更新。

当您用"var xxx"定义变量时,不能在该函数的范围之外访问它,在您的情况下是"par"。

function par() {
    this.xxx = null;
    this.xxx = $scope.$parent.$root.ParentItems['xxx'].xxx;
}

当您尝试从异步任务(如$http.post)的回调更改视图时,您需要"$digest"或"$apply"作用域

//Do this in success callback function in your ajax request
$timeout(function() { //$timeout must be setup as dependency in constructor such as $scope and $http
    $scope.$digest();
});