Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:根据第一个选择下拉列表的选择填充第二个选择下拉列表_Javascript_Html_Angularjs_Select_Ng Options - Fatal编程技术网

Javascript AngularJS:根据第一个选择下拉列表的选择填充第二个选择下拉列表

Javascript AngularJS:根据第一个选择下拉列表的选择填充第二个选择下拉列表,javascript,html,angularjs,select,ng-options,Javascript,Html,Angularjs,Select,Ng Options,我试图根据angularJS中第一个选择下拉列表的选择填充第二个选择下拉列表。我不知道为什么它不更新DOM(UI): 下拉列表1 <div class="input-field col s12 m4 l4 xl4"> <select ng-model="selectedMacroProdotti.fdlcatprod.l01CatPrd" name="l02CatPrd" class="validate" required ng-opt

我试图根据angularJS中第一个选择下拉列表的选择填充第二个选择下拉列表。我不知道为什么它不更新DOM(UI):

下拉列表1

<div class="input-field col s12 m4 l4 xl4">
        <select ng-model="selectedMacroProdotti.fdlcatprod.l01CatPrd" name="l02CatPrd" class="validate" required 
            ng-options="item.l01CatPrd as (item.l01CatPrd | uppercase) for item in listCategoriaProdotti"
            ng-change="populateTipoProdottoListino()">
            <!--  -->
        </select> <label>Codice Categoria Prodotto*</label>
        <div role="alert">
                <span class="error" ng-show="ModificaMacroProdotto.l02CatPrd.$error.required"><font color="red">Campo Obbligatorio!</font></span>           
        </div>
    </div>
列表listTipoProdottoListinoFiltered中填充了值,但前端没有任何操作。 我还使用了$scope.$apply(),但它不能解决我的问题

你能帮我吗


谢谢。

我为你的问题制作了一把小提琴,它很好用 尝试在您的代码,如果它不工作,请更新您的代码在小提琴,我们可以一起调试

[http://jsfiddle.net/swatrahul/Xku9z/504/][1]
我解决了这个问题。 问题是角度物化():

如果要更新select中的项目,只需在编辑原始select后从上面重新运行初始化代码。或者,您可以使用下面的功能销毁材质选择,并创建一个新的选择

$('select')。材料_select('destroy')

我的更新代码如下:

$scope.populateTipoProdottoListino = function(){
        $scope.listTipoProdottoListinoFiltered = [];
        var currentCatProd = $scope.selectedMacroProdotti.fdlcatprod.l01CatPrd;
        $scope.listTipoProdottoListino.forEach(function(item,index){
            if(item.l39CatPrd === currentCatProd){
                $scope.listTipoProdottoListinoFiltered.push(item);
            }
        });
        setTimeout(() => {
            $('#l02TipPrdLst').material_select('destroy');
            $('#l02TipPrdLst').material_select();
            $scope.$apply();
        }, 10);

    }
[http://jsfiddle.net/swatrahul/Xku9z/504/][1]
$scope.populateTipoProdottoListino = function(){
        $scope.listTipoProdottoListinoFiltered = [];
        var currentCatProd = $scope.selectedMacroProdotti.fdlcatprod.l01CatPrd;
        $scope.listTipoProdottoListino.forEach(function(item,index){
            if(item.l39CatPrd === currentCatProd){
                $scope.listTipoProdottoListinoFiltered.push(item);
            }
        });
        setTimeout(() => {
            $('#l02TipPrdLst').material_select('destroy');
            $('#l02TipPrdLst').material_select();
            $scope.$apply();
        }, 10);

    }