使用ui.bootstrap.contextMenu的动态上下文菜单

时间:2017-07-31 14:07:06

标签: angularjs twitter-bootstrap

我正在使用' ui.bootstrap.contextMenu'构建上下文菜单。当我右键单击一个字段时,我需要将一个唯一的ID传递给控制器​​,并根据ID返回一个选项列表。每个列表可能不同。如果我使用硬编码列表,它工作正常,但我似乎无法动态生成列表。我错过了什么?示例代码:

`<div>
    <textarea ng-model="ctrl.status" context-menu="ctrl.menuOptions (ctrl.id)"></div>
</div>
vm.menuOptions = function(id) = {
    var listArray = $scope.list; // array of possible list items based on ID 
   angular.forEach(listArray, function(value, key) {
     if (id === value.id) {
        return [ 
             [value.id, function ($itemScope) { 
                 return value.textName; 
             }],                 
        ]
     }
   }     
}`

1 个答案:

答案 0 :(得分:0)

我假设你指的是这个实现:https://github.com/Templarian/ui.bootstrap.contextMenu

生成上下文菜单的功能通过三件事:

  • $ cmScope - 上下文菜单的范围
  • event - 触发上下文菜单打开的事件对象
  • modelValue - 附加到当前对象的ng-model的值

因此,在您的示例中,您可以使用:

vm.menuOptions = function($cmScope, event, modelValue) = {
  var listArray = $scope.list; // array of possible list items based on ID 
  // ^ Assuming that the $scope here is the scope of the container, not the contextmenu
  angular.forEach(listArray, function(value, key) {
    if (modelValue === value.id) {
      return [ 
        [value.id, function ($itemScope) { 
          return value.textName; 
        }],                 
      ]
    }
  }     
}