角度选择值不变

时间:2016-05-06 14:50:18

标签: angularjs angularjs-directive

我在表格中有几行,每行都在最后一个单元格中有一个选择菜单。初始值由一个控制器填充,选择选项由第二个控制器填充。第二个控制器还会更新ng-change上的值。如果我使用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

1 个答案:

答案 0 :(得分:2)

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

我会重构您的代码,为您的页面/表格设置一个控制器,然后将所有这些代理/潜在客户代码放在控制器随后消耗的单独服务中。

有关更多信息,请参阅此博文: http://kirkbushell.me/when-to-use-directives-controllers-or-services-in-angular/