Angular中的动态作用域变量名

Dynamic Scope Variable Names in Angular

本文关键字:作用域 变量名 动态 Angular      更新时间:2023-09-26

我有很多字段/模型,其中放置在它们上的逻辑将在控制器中相同,除了范围变量名称。我想避免巨大的IF语句,如果可能的话,通过追加数字到范围变量名。我可以在jquery等中做到这一点,但如何在Angular中做到这一点?

例如,我有$scope。$scope.search2。我更希望是$scope。搜索+ id。这可能吗?

在控制器中我有

$scope.getresults= function() {
    if ($scope.search1) {
        $http.jsonp('http://api.com/', {
        params: {
            query: $scope.search1
        }
    if ($scope.search2) {
        $http.jsonp('http://api.com/', {
        params: {
            query: $scope.search2
        }}}

我宁愿能做:

$scope.getresults= function(param) {
        $http.jsonp('http://api.com/', {
        params: {
            query: $scope.search + param
        }}

,但这显然不起作用。

javascript中object内部的属性可以通过两种方式访问,点表示法(object.key)或括号表示法object['key'],在后一种方式中,您可以使用表达式或动态变量名称,如object[expression],因为$scope是一个javascript对象,使用括号表示法访问动态值的范围将是很棒的,你正在传递这样:

$scope.getresults= function(param) {
        $http.jsonp('http://api.com/', {
        params: {
            query: $scope['search' + param]
        }}

你总是可以使用对象表示法。

$scope['search' + param]