2016-11-07 31 views
0

我想要两个菜单,其中第一个菜单中的选项设置第二个菜单中的选项。这是在一个使用Angular JS的Salesforce VisualForce页面上完成的,特别是它的UI-Grid模块。类似的控件使用Angular按钮类来实现菜单,但我没有看到如何使用按钮动态设置选项。设置Salesforce quicklist选项中的按钮/选项

我目前的设计是使用选择控制和ng选项。

在controller.js中,我声明了变量供菜单和函数使用,以换出第二个菜单的数组值。请注意,$ scope.fieldOptions通过对Salesforce的查询来设置,以从快速列表字段中提取选项值。此数组用于UI-Grid filter选项,该选项以“[{value:'1',label:'male'},{value:'2',label:'female'} ...”)的格式接受。

$scope.editRows = 'all'; 
 
    $scope.editField = 'Program'; 
 
    $scope.editValue; 
 
    $scope.editOptions = {}; 
 

 

 
$scope.setEditOptions = function(editField) { 
 
    switch (editField) { 
 
    case "Program" : 
 
     $scope.editOptions = $scope.fieldOptions.Program_Enrolled__c; 
 
     break; 
 
    case "Appl. ASSET" : 
 
     $scope.editOptions = $scope.fieldOptions.Applied_for_ASSET__c; 
 
     break; 
 
    case "4 Year Degree" : 
 
     $scope.editOptions = $scope.fieldOptions.Has_Student_Completed_4_Year_Degree__c; 
 
     break; 
 
    } 
 
}

在VisualForce页面我有一个按钮组中定义的只有后选择控制按钮。

 <div class="row" style="margin-bottom:10px;"> 
 
      <div class="col-md-12"> 
 
      <div class="btn-group"> 
 
       <div class="btn-group" dropdown="true" dropdown-append-to-body="true"> 
 
       <button class="btn btn-default dropdown-toggle" dropdown-toggle="true" type="button"> 
 
        {{editRows | capitalize}} Rows <span class="caret"></span> 
 
       </button> 
 
       <ul class="dropdown-menu"> 
 
        <li ng-click="editRows = 'all'"><a href="#">All Rows</a></li> 
 
        <li ng-click="editRows = 'visible'"><a href="#">Visible Rows Only</a></li> 
 
        <li ng-click="editRows = 'selected'"><a href="#">Selected Rows Only</a></li> 
 
       </ul> 
 
       </div> 
 
       <div class="btn-group" dropdown="true" dropdown-append-to-body="true"> 
 
       <button class="btn btn-default dropdown-toggle" ng-click="setEditOptions(editField)" 
 
         dropdown-toggle="true" type="button"> 
 
        {{editField | capitalize}} <span class="caret"></span> 
 
       </button> 
 
       <ul class="dropdown-menu"> 
 
        <li ng-click="editField = 'Program'"><a href="#">Program Enrolled</a></li> 
 
        <li ng-click="editField = 'Appl. ASSET'"><a href="#">Applied for ASSET</a></li> 
 
        <li ng-click="editField = '4 Year Degree'"><a href="#">4-year degree?</a></li> 
 
       </ul> 
 
       </div> 
 
      <div> 
 
       <select ng-model="editValue" ng-options="option.label for option.value in selectOptions"> 
 
       </select> 
 
      </div> 
 
       
 
       </div> 
 
    
 
       <button id="split-button" type="button" class="btn btn-default" ng-click="massUpdate()">Modify</button> 
 
      </div> 
 
      </div>

我在正确的轨道上?如果有更简单的方法,或者直接使用按钮菜单的方法,请随时提供建议。否则,问题是我如何使用ng-options?

+0

取决于你是如何得到从Salesforce的数据,你可能需要一个'$范围。$应用()'设置你的选择了。 –

+0

对不起,花了很长时间来编辑它。我的观点是,页面在相同的范围内,并且所连接的调用使用ng-click和ng-options,因此它们应该被包装在$ apply()中。 http://jimhoskins.com/2012/12/17/angularjs-and-apply.html –

回答

0

好的,比我想象的要容易。两个错别字。首先,我用{}而不是[]声明了数组。我在select语句的ng-options部分中拼写错了。修正了这个问题,它正在工作。

如果有人知道任何窍门让这个按钮的工作,所以它会匹配其他人,但这将是美好的。否则,我想我会与所有选择一致。此外,也许可以将这些选项捆绑到一个数组中,其主键选项作为键,这样我就可以在没有case语句的情况下引用。

$scope.editRows = 'all'; 
 
    $scope.editField = 'Program'; 
 
    $scope.editValue; 
 
    $scope.editOptions = {};