2016-09-27 179 views
0

我需要基于页面变量中的来更改绑定元素的值。AngularJS如何动态设置绑定元素的值

这是在页VAR:

<script type="text/javascript"> 
var myVar = 'value1'; 
</script> 

这是选择与bind元素:


<select value=""> 
<option ng-repeat="value in valueList"> 
    {{myNewValue()}} 
</option> 
</select> 

这里是控制器:


$scope.inPageVar = $window.myVar; 

$http.get(jsonUrl).then(function(result) { 
    $scope.valueList = result.data.valueList; 
    $scope.myNewValue = function() { 
     return $scope.valueList[0].additional + $scope.inPageVar; 
    }; 
}); 

这里的JSON结构:


"valueList": [ 
      { 
      "additionnal": { 
       "value1": "this is value 1", 
       "value2": "this is value 2" 
      } 
      }, 
      { 
      "additionnal": { 
       "value1": "this is value 3", 
       "value2": "this is value 4" 
      } 
      } 
     ] 

我想知道如何连接与get函数的元素的页VAR值..谢谢您!

+0

,直到你做出myVar的全球或将其添加到$ rootScope你不能做到这一点 – Thaadikkaaran

+0

我该怎么做? – paolopolix

+0

你想在角度控制器中分配一个JavaScript变量吗? –

回答

0

(function() { 
 

 
    angular.module("CombineModule", []).controller('MyController', function() { 
 
    this.values = [{ 
 
     "additional": { 
 
     "value1": "this is value 1", 
 
     "value2": "this is value 2" 
 
     } 
 
    }, { 
 
     "additional": { 
 
     "value1": "this is value 3", 
 
     "value2": "this is value 4" 
 
     } 
 
    }]; 
 

 
    this.myNewValue = function(index) { 
 
     return this.values[index].additional[myVar]; 
 
    }; 
 
    }); 
 

 
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<!DOCTYPE html> 
 
<html lang="en" ng-app="CombineModule"> 
 

 
<head> 
 
    <title></title> 
 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <script> 
 
    var myVar = 'value1'; 
 
    </script> 
 
</head> 
 

 
<body ng-controller="MyController as v"> 
 
    <select value=""> 
 
    <option ng-repeat="value in v.values"> 
 
     {{v.myNewValue($index)}} 
 
    </option> 
 
    </select> 
 
    <script src="app.js"></script> 
 
</body> 
 

 
</html>

如果你想在全球范围内公开myVar的,

window.myVar = 'some value'代替var myVar = 'someval'

或者,如果你想这可为$rootScope.myVar = 'some value'

然后在你的逻辑,

return $scope.valueList[0].additional[window.myVar];

+0

myVar来自后端,它被打印在HTML中的 我想全局公开它,像这样使用它:'result.data.valueList.additional 。 < - 最后一个是页面var myVar – paolopolix

+0

uhm,但是如果我编写console.log($ scope.inPageVar);它打印myVar的值 – paolopolix

+0

所以你的意思是你能够获得变量的值,但不分配它? –