Angularjs 角度选择值不变

Angularjs 角度选择值不变,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我在一个表格中有几行,每行在最后一个单元格中都有一个选择菜单。初始值由一个控制器填充,选择选项由第二个控制器填充。第二个控制器还更新ng更改时的值。如果我使用ng selected,我会获得初始值,但不会在更改时更改值。(但它会将其记录到控制台)。如果我使用ng init,它不会在加载时提供值,但会在更改值后更新 app.controller('agents', function($scope, $http){ $scope.getAgents = function(){

我在一个表格中有几行,每行在最后一个单元格中都有一个选择菜单。初始值由一个控制器填充,选择选项由第二个控制器填充。第二个控制器还更新ng更改时的值。如果我使用ng selected,我会获得初始值,但不会在更改时更改值。(但它会将其记录到控制台)。如果我使用ng init,它不会在加载时提供值,但会在更改值后更新

app.controller('agents', function($scope, $http){

    $scope.getAgents = function(){
        $http.get("getagents.php").then(function(response) {
            $scope.agents = response.data;
        });
    }

    $scope.getActiveAgents = function(){
        $http.get("activeagents.php").then(function(response) {
            // console.log(response.data);
            $scope.activeagents = response.data;
        });
    }

    $scope.updateAgenttoLead = function(agent, id){

       console.log('ID:'+ id);
       console.log('Agent:'+ agent);
    }

    $scope.updateForm = {};

    $scope.updateAgent = function() {
        $http.post('updateagent.php', {
                'id' : $scope.updateForm.id, 
                'username' : $scope.updateForm.username, 
                'password' : $scope.updateForm.password
            }
        ).success(function(data) {
            // console.log(data);
            $scope.updateForm = {};
            $scope.getAgents();
            // if (!data.success) {
            //   // if not successful, bind errors to error variables
            //   $scope.errorName = data.errors.name;
            //   $scope.errorSuperhero = data.errors.superheroAlias;
            // } else {
            //   // if successful, bind success message to message
            //   $scope.message = data.message;
            // }
          });
    };

    $scope.addForm = {};

    $scope.addAgent = function() {

        $http.put('createagent.php', {
            'username' : $scope.addForm.username, 
            'password' : $scope.addForm.password,
            'type' : $scope.addForm.type
            }
        ).success(function(data) {
            $scope.addForm = {};
            $scope.getAgents();
          });
    };

    $scope.deleteagent = function(newid){

        var r =confirm('Are you sure you want to delete '+ newid+'?');

        if(r){
            $http.post('deleteagent.php', {
                'newid':newid
                }
            ).success(function(data) {
                $scope.getAgents();
                console.log(data);
              });
        }
    };

}); // end controller

app.controller('leads', function($scope, $http){
    $scope.getLeads = function(){
        $http.get("getleads.php").then(function(server) {
            $scope.leads = server.data;

        });
    }

    $scope.dispositions =[
        'Never Called',
        'Not Available',
        'Left Message',
        'Call Later',
        'Not Interested',
        'Not Qualified',
        'Bad Phone',
        'No Dates',
        'DNC',
        'Post Date',
        'Sold'
    ];

    $scope.updateDisp = function(disp, id){

        var r = confirm('Update record '+ id +' to '+disp+'?');
            if(r){
                $http.post('updatedisp.php', {
                        'id' : id, 
                        'disp' : disp
                    }
                ).success(function(data) {
                    console.log(data);
                  });
            }else{
                $scope.leads={};
                $scope.getLeads();
            }
    }
}); // end controller

您正在将控制器用作服务。控制器旨在将UI绑定到实现,而不是提供检索数据的功能

我将重构您的代码,使页面/表有一个单独的控制器,然后将所有这些代理/领导代码放在单独的服务中,您的控制器在需要时使用这些服务

有关更多信息,请参阅本博客文章:
您正在将控制器用作服务。控制器旨在将UI绑定到实现,而不是提供检索数据的功能

我将重构您的代码,使页面/表有一个单独的控制器,然后将所有这些代理/领导代码放在单独的服务中,您的控制器在需要时使用这些服务

有关更多信息,请参阅本博客文章:

我强烈建议为此问题创建Plunker。我强烈建议为此问题创建Plunker。