AngularJS - 从字符串获取$ scope变量

时间:2014-06-22 02:44:57

标签: angularjs

所以说我有一个$scope变量定义如下:

$scope.data = {
    filter: {
        state: 'WA',
        country: 'US'
    }
};

如何通过字符串在单独的服务中访问它?例如在data.filter

的上下文中$scope

所以说我有这样的服务方法:

function doSomething($scope, variableName) {
    // I want to access $scope[variableName] here??
}

我会像控制器一样从控制器中调用它:

service.doSomething($scope, 'data.filter');

2 个答案:

答案 0 :(得分:17)

您需要使用$eval

function doSomething($scope, variable) {
  var data = $scope.$eval(variable);

  // this logs {state: "WA", country: "US"}
  console.log(data);
}

但是,如果您希望每次内容更改时都执行某些功能,最好使用$watch

function doSomething($scope, variable) {
  $scope.$watch(variable, function(data) {
    // this logs {state: "WA", country: "US"}
    console.log(data);
  });
}

答案 1 :(得分:-1)

您可以通过此代码段

访问String变量
var objAddress=variableName.split('.');
var yourVar=$scope.$eval(objAddress[0])[objAddress[1]];