有没有办法将变量名称与字符串连接起来,或者它是基本的编程错误

时间:2013-11-18 06:42:29

标签: angularjs angularjs-directive angularjs-scope

我正在开发一个AngularJs应用程序。我有一个HTML选择标记数组,我将ng-model名称和选项列表名称与变量连接起来。他有两个列表或数组。第一个数组是一个级别列表,用于在文档上附加多个选择标记。

<div data-ng-repeat="level in levelslist">
<select ng-model="subtopics_"+{[{level}]} ng-options="subtopic.name for subtopic  in subtopicslist_"{[{level}]} ng-change="loadOtherSubTopics(level)">
</select>
</div>

在HTML代码中看到,我将级别与数组名称和模型名称连接起来。并在ng-change上调用函数。这是一个AJAX请求 我的AngularJs函数是

$scope.loadSubTopics=function(){
        $http.get('/pathfortherequest/).
            success(function(data, status) {
                $scope.subtopicslist_+data.level=data.subtopicslist;
            })
            .
            error(function(data, status) {
                $scope.data = data || "Request failed";
                $scope.status = status;        
            });
       };

我在后端的数据返回中有一个级别变量。我想要做的是因为我有列表和ng模型名称与级别变量连接。在将数据分配给该列表时,我希望将列表名称与从ajax请求中收到的data.level连接为

$scope.subtopicslist_+data.level=data.subtopicslist;

但是当我尝试这样做时,会出现错误

ReferenceError: invalid assignment left-hand side
$scope.subtopicslist_+data.level=data.subtopicslist;

我试图连接列表或数组的名称。告诉我,我该怎么做。 像在python中一样,我们可以使用%s%(level)来完成此操作。我们如何在AngularJs中应用它? 将不胜感激

1 个答案:

答案 0 :(得分:2)

虽然可能,但我怀疑连接变量名不是你需要的。您可以使用对象来实现所需。在控制器中,您可以将其定义为对象:

$scope.subtopicslist = {};

然后在$ http成功时,您可以按“级别”分配属性

$scope.subtopicslist[data.level] = data.subtopicslist;

然后在模板中,您仍然可以将此对象的单个元素用作模型

ng-model="subtopicslist[level]"