AngularJS:在加载时,使用AngularJS和数据并不总是正确填充

AngularJS:在加载时,使用AngularJS和数据并不总是正确填充,angularjs,angularjs-directive,angular-ngmodel,auto-populate,Angularjs,Angularjs Directive,Angular Ngmodel,Auto Populate,我正在写一些表格来添加和编辑资源。我正在使用alt和我自己的下拉指令从数据库中获取选择。这些是在一个独立于主窗体的控制器中。我的常规文本字段在编辑表单上填充得很好,但我对Angucomplete和selects有问题。范围数据在页面加载中。我已经编写了一个函数来使用URL中的ID获取它。但除非重新加载页面,否则它们不会一直填充。如何让它们每次都填充 以下是我填充表单的函数: $scope.popForm = function(clientId) { var config = {

我正在写一些表格来添加和编辑资源。我正在使用alt和我自己的下拉指令从数据库中获取选择。这些是在一个独立于主窗体的控制器中。我的常规文本字段在编辑表单上填充得很好,但我对Angucomplete和selects有问题。范围数据在页面加载中。我已经编写了一个函数来使用URL中的ID获取它。但除非重新加载页面,否则它们不会一直填充。如何让它们每次都填充

以下是我填充表单的函数:

 $scope.popForm = function(clientId) {
        var config = {
            params: {clientId: $stateParams.clientId},
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        };
        $http.get('assets/php/clients/pop_client.php', config)
            .then(function(data) {
                    var realStatus = data.data.status;
                    if(realStatus == 'success'){

                        //Set the $scope from the JSON response
                        $scope.client = data.data.client;


                        //Broadcast a bunch of events with data to the dropdowns
                        $timeout(function() { 
                            $rootScope.$broadcast('setTypeDropdown', data.data.client.type);
                            $rootScope.$broadcast('setCatDropdown', data.data.client.category);
                            $rootScope.$broadcast('setTeamDropdown', data.data.client.team);
                            $rootScope.$broadcast('setA1Dropdown', $scope.client.assigned1);
                            $rootScope.$broadcast('setA2Dropdown', $scope.client.assigned2);
                        });
                    }
        });
};
我有另一个控制器负责选择,所以这就是为什么会有数据广播到它们的隔离作用域。这是一个$on函数,因为它们基本上都是相同的。一定有一种不那么复杂的方法来做这件事

// Options are the select options that I get from the database 
// for each instance of the select controller

$scope.$on('setTypeDropdown', function(event, type) {
                    var i = 0;
                    $.each($scope.options, function(){
                        if (this.value == type){ 
                                $scope.client.type = $scope.options[i];
                        }
                        i++;
                    });
});
那么,有没有更好的方法?因为这不太管用


编辑:安圭拉替补队现在运作良好。只是我那令人费解的选择。不知道是否最好取消它们的角度化,不使用我的指令。

您有5个完整的alt指令?实际上,什么是作为本地数据传递给每个指令的?我只有2个指令,现在这些指令正在工作。这是我担心的5个选择。每一个都有一个ng init=getOptionsoption类型,它抓住了您应该能够从数据库中选择的选项。有5行广播对我来说真的很可怕。就我个人而言,我尽量不在代码中使用nginit。因此,看起来您需要对代码进行认真的重组,但很抱歉,很难看到应用程序中到底发生了什么。我不能帮你处理这么多的片段。是的,等我有时间的时候重写那一节,这应该可以解决问题。谢谢你抽出时间。