我的头一直在敲键盘有一段时间了。

我有一个动态从服务器获取数据的指令。我根据后续下拉列表值隐藏显示下拉列表。当我进行新选择时,我想删除所有以前的选择。我遇到的情况是,即使在我清除之后,之前选择的数据仍然存在。

请在下面找到我的代码: 功能链接(范围,元素){ scope.displayChildren = displayChildren;

  function displayChildren() { 
    var currentItem = scope.model; 
    scope.children = []; 
    var elementName = currentItem.name + '-child'; 
    var elementResult = angular.element(document.querySelector('.' + elementName)); 
 
    if ( elementResult.length > 0) { 
      element.contents().remove(); 
      elementResult.contents().remove(); 
      element.append('<composed-components model="model"></composed-components>'); 
      $compile(element.contents())(scope); 
    } 
 
    for (var i = 0, x = currentItem.children.length; i < x; i++) { 
      var currentChild = currentItem.children[i]; 
      var array = currentChild.parentValue.split(','); 
      scope.children = getScopeChildren(array, currentChild); 
    } 
    if (scope.children.length < 1) return; 
    element.append('<composed-components class="{{child.parentName}}-child" ng-repeat="child in children track by child._id" model="child"></composed-components>'); 
    $compile(element.contents())(scope); 
  } 
 
  function getScopeChildren(array, currentChild) { 
    if (scope.model.currentValue === null) { 
      return []; 
    } 
    if (array.length > 1) { 
      for (var i = 0, x = array.length; i < x; i++) { 
        scope.children = compare(scope.model.currentValue.value, array[i], scope.children, currentChild); 
      } 
    } else { 
      scope.children = compare(scope.model.currentValue.value, currentChild.parentValue, scope.children, currentChild); 
    } 
    return scope.children; 
  } 
 
  function compare(value1, value2, array, currentValue) { 
    if (value1 === value2) { 
      array.push(currentValue); 
    } 
    return array; 
  } 
} 

任何帮助将不胜感激。

请您参考如下方法:

如果您使用 ng-model 将下拉列表中的数据绑定(bind)到范围属性,您只需从范围中删除值,下拉列表中的值将通过 Angular 的智能 two-way data binding 自动更新。 .

您可能还想查看 ngOptions指令是一种从 Controller /指令链接函数中抽象出下拉填充逻辑的快速方法。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!