同时打开共享相同指令的2个下拉列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同时打开共享相同指令的2个下拉列表相关的知识,希望对你有一定的参考价值。

我有一个名为X的angularjs下拉指令,当我开始在输入字段上输入时,它会打开并显示相关项。我的页面中有两个X指令,它们具有相同的控制器和模板(即相同的指令但不同的隔离范围)。

第一个指令显示行星列表,第二个指示显示正在键入的行星中的矿物列表。当我开始输入输入时,我想打开两个动态显示相关数据的指令。但由于他们共享相同的模板,我不知道如何打开第二个指令的下拉列表。

模板中只有一个ng-repeat,但是有两个不同范围的2个列表。我只想知道理解这一点的方法。谢谢。

答案

这里的指令将监听inpVal并更新指令中的列表(你需要将inpVal传递给指令)。

.directive("myCustomSelect", function(){
    return {
        restrict: "AE",
        scope: {
            inpVal: "="
        },
        link: function(scope, ele, attrs){

            var _list = [];

            scope.list = _list;

            var _watch = scope.$watch("inpVal", function(n){
                if(n){
                    updateList();
                }
            });

            scope.$on("$destroy", function(){
                _watch();
            });

            function updateList(){
                var enteredVal = scope.inpVal;

                //_.filter is underscore js
                scope.list = _.filter(_list, function(v){
                    return enteredVal == v.name?true:false; 
                });                
            }            

        },
        template: "<select ng-options="l.name as l for l in list"></select>"
    }
})

以上是关于同时打开共享相同指令的2个下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

想要同时更改具有相同值的两个下拉列表

如何根据主下拉列表更新 2 个下拉列表?

在单个父下拉类中打开 2 个引导下拉列表,但有 2 个不同的下拉列表

在一个活动中加载单个片段两次,从本地json文件中加载2个问题

单击第二个下拉列表时,黑框应保持可见

下拉列表刷新