Angularjs在HTML中动态修改ng元素

时间:2017-09-27 12:31:50

标签: angularjs

我有一个这样的例子:

With MyDatabase
For Each MyQueryDef In CurrentDb.QueryDefs
 If MyQueryDef.Name = "tmpOutQry" Then

   .QueryDefs.Delete ("tmpOutQry")
   Exit For
   End If
   Next

    Set MyQueryDef = .CreateQueryDef("tmpOutQry", strSQL)
End With

我想在我的脚本中将ng-repeat更改为其他内容(例如foo到foo2),当我执行某些操作时(例如,单击按钮)。 有可能吗?

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

  

我想在我的脚本中将ng-repeat更改为其他内容(例如foo到foo2),当我执行某些操作时(例如,单击按钮)。有可能吗?

简答

AngularJS解析ng-repeat指令值并期望模式item in collection

但是你可以替换你迭代的列表。

<div id="test" ng-repeat="item in foo()">

其中foo()可能是返回对象数组的方法

  

但是可以动态地用foo2()更改函数foo()吗?

您可以将方法foo()编写为:

$scope.foo = function(){

   if($scope.clicked){
    return array1;
   }
   alse{
    return array2;
   } 
 }

详细信息

来自Angular_6.6

var expression = $attr.ngRepeat;
      var ngRepeatEndComment = $compile.$$createComment('end ngRepeat', expression);

      var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);

      if (!match) {
        throw ngRepeatMinErr('iexp', 'Expected expression in form of \'_item_ in _collection_[ track by _id_]\' but got \'{0}\'.',
            expression);
      }

模式是:

/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/
                  ^^^

答案 1 :(得分:1)

您可以重复filesystem并在点击按钮时毫无问题地进行更改。它使用你想要重复的两个数组之间的第三个变量。

<强> Plunkr

foo
<div ng-controller="ctrl">
  <div ng-repeat="x in choice">{{x}}</div>
  <button ng-click="switch()">Switch</button>
</div>