2017-07-01 75 views
0

我是angular js的新手。在我的代码中,用户更改单选按钮的值。并根据所选择的单选按钮的值,一段代码被从NG-开关加载
HTML:在使用ng-model的select中删除空选项

<body ng-app=""> 
    <div ng-repeat="button in modes"> 
    <label> 
     <input type="radio" ng-model="data.mode" value="{{button.value}}" ng-click="clearObjectIdModal()" name="e_modes"> 
     {button.label}} 
    </label> 
    </div> 

    <div ng-switch on="data.mode"> 

    <div ng-switch-when="client"> 
     <label for="e_selected_object_item_id">Select Client name: </label> 
     <select id="e_selected_object_item_id" name="e_selected_object_item_id" ng-model="currentDataItem.object_id" required> 
     <option ng-repeat="item in customersListArr" value="{{ item.id }}">{{ item.Name }}</option> 
     </select> 
    </div> 

    <div ng-switch-when="agent"> 
    // This part is similar to the previous one 
    </div> 

    </div> 
</body> 

控制器部分:

$scope.data = {}; 
$scope.setFile = function() { 
    if ($scope.data.mode == 'client') 
    return 'client'; 
    else if ($scope.data.mode == 'agent') 
    return 'agent'; 

$scope.modes = [{ 
    value: 'client', 
    label: 'Client' 
},{ 
    value: 'agent', 
    label: 'Agent' 
}]; 

$scope.currentDataItem = data; // data is preloaded from inputs in form 

还有一个NG点击=“clearObjectIdModal()”在切换的单选按钮时清除模型:

$scope.clearObjectIdModal = function() { 
    $scope.currentDataItem = ""; 
} 

的问题是,每次当单选按钮被切换到塞莱时间ct值会动态变化,其中第一个选项的值将变为undefined。因为在构建这些选项的数组中没有这样的object_id(这是不存在的id,所以绘制了一个空的字段)。
也就是说,有所有的作品。但是select中的第一个选项(切换到另一个单选按钮之后)呈现为空字符串。
有想法,如何解决?

回答

0

我不确定我是否正确理解您的问题,但我会建议一些改进。

  1. setFile功能改成如下

    $ scope.setFile =函数(){$回报scope.data.mode;}

我还没有看到结束在你的代码中你的函数的括号。此外,如果你的功能只会返回data.mode那么为什么需要这个功能?

  • 我建议初始化data对象正确像:

    $ scope.data = {模式: '客户'};

  • 更改clearObjectIdModal功能:

    $ scope.clearObjectIdModal =功能(模式) {$ scope.currentDataItem = “”; $ scope.data.mode = mode; }

  • ,并在你的HTML使用它作为ng-click="clearObjectIdModal(button.mode)"

    +0

    Tsungur,thaks为您解答您的时间。但我昨天自己解决了这个问题!) –

    0

    所以在功能clearObjectIdModal()我说:

    $scope.clearObjectIdModal = function() { 
        if ($scope.e_data["mode"] == 'client') { 
        if ($scope.customersListArr.length > 0) { 
         $scope.currentDataItem.object_id = $scope.customersListArr[0]['id']; 
        } 
        } 
        else if ($scope.e_data["mode"] == 'agent') { 
        if ($scope.agentsListArr.length > 0) { 
         $scope.currentDataItem.object_id = $scope.agentsListArr[0]['id']; 
        } 
        } 
    
    } 
    

    并在此之后,当我改变单选按钮在当前的第一个选项选择(每次更改)都不会为空。

    而且具有附加空期权问题能够解决,当你添加一个标题列表中的第一项:与

    <option value="" disabled>Select</option> 
    
    相关问题