AngularJS使用模板内的全局变量进行orderBy ng-repeat值

时间:2019-04-24 20:38:47

标签: angularjs angularjs-ng-repeat angularjs-orderby

我正在开发一个有角度的应用程序,该应用程序只能访问组件html代码,而无法访问该应用程序的源代码。 我想用自定义函数对数组重新排序,但是我不确定是否可以访问模板中的全局变量。

这有效并通过“名称”属性的值对字段进行排序。

<div ng-repeat="$field in $fields | orderBy:'name' track by $field.name " >
   <input ng-model="$item[$field.name] " />
</div>

如果我尝试这样做,将无法正常工作

  

不起作用

<script>var orderByProperty = 'name'; </script>
<div ng-repeat="$field in $fields | orderBy:orderByProperty track by $field.name " >
   <input ng-model="$item[$field.name] " />
</div>

如何从角度模板中访问全局变量?

我无权访问应用程序的控制器代码或应用程序的主js文件,只能访问组件的html 。解决如何在模板中对数组进行排序的解决方案也将解决此问题。

2 个答案:

答案 0 :(得分:0)

您可以使用ng-init在html中添加一些变量,如下所示:

<body ng-controller="MainCtrl as ctrl" ng-init="orderByProperty = 'name'">
    <div ng-repeat="$field in $fields | orderBy:orderByProperty track by $field.name ">
        <input ng-model="$field.name" />
    </div>        
</body>

答案 1 :(得分:0)

  

如何从angular [JS]模板中访问全局变量?

你不能。

从文档中:

  

AngularJS表达式类似于JavaScript表达式,但具有以下区别:

     
      
  • 上下文:针对全局窗口评估JavaScript表达式。在AngularJS中,表达式是根据作用域对象求值的。
  •   

有关更多信息,请参见