AngularJS - 选择选项并在函数中使用它

时间:2016-05-10 04:57:36

标签: javascript angularjs forms

我有一个cshtml文件,其中我有以下代码(从模型中获取数据的下拉列表)

<div class="controls">
  <select ng-model="model.CountryCode" ng-change="countryChanged({{country.ISO316613LetterCode}})">
    <option ng-repeat="country in model.Countries" value="{{country.ISO316613LetterCode}}">{{country.CommonName}}</option>
  </select>
</div>

我有这个功能,我在其中检测到从下拉列表中选择了一个国家

    $scope.countryChanged = function(){
        var countryDet = _.find($scope.model.CountryDetails, function(cd){
            console.log("countryDet");
            return cd.CountryCode === $scope.model.Country;
        });

        if(countryDet){
            $scope.model.CountryDetail = countryDet;

            // set business properties from country details
            $scope.model.DateFormat = countryDet.DefaultDateFormat;
            $scope.model.ShortDateFormat = countryDet.DefaultShortDateFormat;
            $scope.model.DateFormatJs = countryDet.DefaultJsDateFormat;
            $scope.model.LongDateFormat = countryDet.DefaultLongDateFormat;
            $scope.model.TaxCode = countryDet.SalesTaxName;
            $scope.model.Currency = countryDet.DefaultCurrencySign;
            $scope.model.AccSoftwareDateFormat = countryDet.DefaultAccSoftwareDateFormat
            $scope.model.WeightSystem = countryDet.DefaultWeightSystem
        }

        $scope.loadStates();
    };

另一个功能,应该在网上显示额外的下拉菜单,显示国家选择的状态是美国还是AUstralia

    $scope.stateVisible = function(){

        if($scope.model && $scope.model.CountryDetail){
          return $scope.model.CountryDetail.StateVisible;
        }

        return false;
    };

我的问题是,我不知道如何将所选的LetterCode(选项值)发送到函数countryChanged,因为,我想如果我这样做,那么我将能够轻松地将状态加载到附加下拉列表中并在现场展示。

2 个答案:

答案 0 :(得分:0)

由于您为每个变量使用$ scope,因此可以使用rootScope

https://docs.angularjs.org/api/ng/service/ $ rootScope

用于传递数据。

答案 1 :(得分:0)

只需使用objProp即可将所选模型分配给var nameList = { n1: { name: "PRS POP", section: 211, rollNo: 211, }, n2: { name: "steve XYZ", section: 32, rollNo: 359, } } function display_proc() { var x = 0; var objProp; for (var objProp in nameList) { if (nameList.hasOwnProperty(objProp)) { for (var obj in nameList[objProp]) { if (nameList[objProp].hasOwnProperty(obj)) { document.writeln(nameList[objProp][obj]); } } } } } display_proc();的{​​{1}}。例如

ng-options

然后,您的ng-model函数(以及任何其他控制器函数)可以使用<select>,这将是一个完整的国家对象。

Plunker demo〜http://plnkr.co/edit/tFjvT92B1itmwkRjZIbJ?p=preview