Javascript 手动显示角度陷阱下拉列表-如何显示?

Javascript 手动显示角度陷阱下拉列表-如何显示?,javascript,html,angularjs,angularjs-directive,angular-strap,Javascript,Html,Angularjs,Angularjs Directive,Angular Strap,我试图手动显示一个,利用$dropdownProvider上的触发器配置 // how dropdown is triggered - click | hover | focus | manual app.config(function($dropdownProvider) { angular.extend($dropdownProvider.defaults, { trigger: 'manual' }); }); 单击悬停聚焦一切正常,但为什么不手动?我还没

我试图手动显示一个,利用
$dropdownProvider
上的
触发器
配置

// how dropdown is triggered - click | hover | focus | manual
app.config(function($dropdownProvider) {
    angular.extend($dropdownProvider.defaults, {
        trigger: 'manual'
    });
});
单击
悬停
聚焦
一切正常,但为什么不
手动
?我还没有发现任何证据证明这个api配置选项有效。我该怎么做

事实上,这个问题似乎是在我最初提出问题后发现的,但现在已经解决了,一年多后我还没有找到解决方案

问题:

我已经删掉了一个例子,说明了我在努力解决这个问题。为了明确我的目标,我想在击键时触发我的
中的下拉列表(
ng model
change)。我希望在不使用任何默认触发选项(特别是
trigger:manual
)的情况下,按住下拉菜单并调用一个函数来手动触发它,并按照api提供的直观方式进行操作,因此,理想的解决方案不应局限于任何特定的触发器,而应完全手动以适应许多不同的用途



使用ngStrap的v2.0.4,手动触发日期选择器(或任何下拉菜单)现在要容易得多。有关更多详细信息,请参阅

这里的日期选择器既是一个手动触发的下拉列表,也是一个手动触发的内联元素


(而且您甚至不需要
数据触发器=“手动”
,因此如果需要,可以将其关闭)


至于intellisense指令,这听起来不像是这里的问题,所以我将把它留给您……

当我有一个如上所述的下拉列表并希望手动触发它时,我会向元素添加一个
id


单击以切换下拉列表
然后只需触发元素
click()
方法:

$scope.dropdown=angular.element(“#myDropdown”);
...
$scope.dropdown.click();
演示->

这可以与以下内容结合使用:

hotkeys.bindTo($scope)
.添加({
组合:“”,
说明:“”,
回调:函数(){
$scope.dropdown.单击()
}
})

对于任何感兴趣的人,在深入研究源代码之后,我在指令
bsDropdown
上发现了一个名为
bsShow
的属性,该属性具有以下实现

// Visibility binding support
attr.bsShow && scope.$watch(attr.bsShow, function(newValue, oldValue) {
    if(!dropdown || !angular.isDefined(newValue)) return;
    if(angular.isString(newValue)) newValue = !!newValue.match(/true|,?(dropdown),?/i);
    newValue === true ? dropdown.show() : dropdown.hide();
});
这本质上驱动下拉标记包含此内容并绑定到
$scope

<textarea id="textdrop" ng-model="expression" intellisense bs-dropdown="dropdown" bs-show="drop"></textarea>

这似乎是在引用的项目提交中记录的。官方文件仍然没有提到这一点作为写作时间,鉴于这一时间表,我感到惊讶的是,这一点没有得到重视


使用
trigger:manual

这很好,但是你回答了一个不同的问题-海报询问了下拉列表。我的回答是有效的,我只是使用了一个日期选择器作为示例。日期选择器是下拉列表。它的工作方式与任何下拉列表完全相同,如公认的答案所示,其解决方案与我的相同(使用
bs show
data bs show
)?我仍然无法用手动触发器触发下拉菜单。文档是完全缺乏的,根据它听起来像
手册
甚至不应该是api的一部分,如果它涉及到这一点,那么我已经对这个问题进行了编辑。在这一点上,我并不太关心绑定一个关键配置——而是一个很好的建议。我只是想触发下拉列表somehow@salniro请看这个plnkr->它在页面加载1秒后按上述代码打开一个下拉列表。这仍然不是我的目标。这不是使用
触发器:手动
配置。我不想使用
单击
,理想情况下,我想在我的
中触发击键下拉菜单example@salniro,是-您只需在(现在已删除)指令中调用$scope.dropdown.click(),当出现所需的击键时,可以通过热键或其他方式调用。@davidkonrad感谢您的积极反馈!真可惜,我花了一笔赏金,却最终沉迷于此,哈哈
// Visibility binding support
attr.bsShow && scope.$watch(attr.bsShow, function(newValue, oldValue) {
    if(!dropdown || !angular.isDefined(newValue)) return;
    if(angular.isString(newValue)) newValue = !!newValue.match(/true|,?(dropdown),?/i);
    newValue === true ? dropdown.show() : dropdown.hide();
});
<textarea id="textdrop" ng-model="expression" intellisense bs-dropdown="dropdown" bs-show="drop"></textarea>
app.directive('intellisense', [function () {
    return {
        restrict: 'A',
        link: function (scope, elem, attrs) {
          scope.$watch(attrs.ngModel, function (v) {
                if(v) {
                  scope.drop = true; // simple - but works
                } else {
                  scope.drop = false;
                }
            });
        }
    }
}]);