所以说我有一个$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');
答案 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]];