我的HTML模板代码是:
<p>{{"fieldname_"+lang}}</p>
在控制器中我有以下内容:
$scope.lang = "mr";
$scope.fieldname_mr = "Dynamic varible";
我希望结果为Dynamic varible
,但它是fieldname_mr
。
我怎样才能实现这一目标?
答案 0 :(得分:2)
您可以使用bracket notation来实现此目标:
angular.module('app', [])
.controller('testController',
function testController($scope) {
$scope.lang = "mr";
$scope.dynamicVars = {fieldname_mr : "Dynamic varible"};
});
<body ng-app="app">
<div class="table-responsive" ng-controller="testController">
{{dynamicVars["fieldname_" + lang]}}
</div>
</body>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
答案 1 :(得分:0)
你想要的是i made a middleware解决方案,它保留了所有你需要的但通过一个使var返回的函数传递,理解这样做的角力
<div ng-controller="MyCtrl">
<span ng-init="">{{getValue('fieldname_'+lang)}}</span>
</div>
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.lang = "mr"; $scope.fieldname_mr = "Dynamic varible";
$scope.getValue =function(name){
return $scope[name] ||'no existe man';
}
}
答案 2 :(得分:0)
是的,您可以按照以下方式设置动态变量,如下所示:
您希望变量名称存储在变量中,而不是按照以下代码:
$scope[dynamic_var]=Value of variable;
当您获取此值时:
不修复范围属性时使用此选项
alert($scope[dynamic_var])
在修复属性名称时使用
alert($scope.dynamic_var)