Angularjs 如何在角度';s$parse

Angularjs 如何在角度';s$parse,angularjs,Angularjs,我有一个对我的作用域值之一的字符串引用,如下所示: var reference_string = "form.name"; 我想为它引用的对象指定一个值: $scope.form.name = 'newvalue'; 环顾四周,我发现了两种可能的解决方案:或使用角函数 但是,$parse函数似乎只返回值。我可以这样做,以便我可以分配一个新的值吗 我想做一些像这样的事情 var reference_string = "form.name"; var reference = getReferen

我有一个对我的作用域值之一的字符串引用,如下所示:

var reference_string = "form.name";
我想为它引用的对象指定一个值:

$scope.form.name = 'newvalue';
环顾四周,我发现了两种可能的解决方案:或使用角函数

但是,$parse函数似乎只返回值。我可以这样做,以便我可以分配一个新的值吗

我想做一些像这样的事情

var reference_string = "form.name";
var reference = getReference($scope, reference_string); // ideally using an angular in-built function like $parse
reference = 'newvalue'; // should have the same effect as $scope.form.name = 'newvalue';

$parse
返回的对象具有用于设置值的
assign()
方法

var getter = $parse(reference_string);
getter.assign($scope, 'newValue');

Plunker demo~

$parse是一种角度服务,它将表达式转换为函数。然后可以调用该函数并传递上下文(通常是作用域),以便检索表达式的值。 此外,如果表达式是可赋值的,则返回的函数将具有assign属性。assign属性是一个函数,可用于更改给定上下文中表达式的值


您是否试图使用字符串访问像
表单['name']
这样的对象?@TjGienger是的,只是它是嵌套格式的,所以我无法直接执行
$scope['form.name']
不工作吗?您是否尝试
$scope['form']['name']
?我从来没有,只是想用正则表达式把原版分开string@TjGienger除了使用eval,我不能这么做。我还提到,有一种简单的JS方式(通过解析字符串和遍历对象),这有点不成熟,我希望angular的
$parse
能提供更优雅的解决方案。谢谢!这个例子确实有助于展示如何使用它。如果引用有多个数据{name1:“test1”,name2:“test2”},那么它如何处理这个场景@Phil@VenkatRJV不知道你的意思
$parse
仅支持单个表达式AFAIK,但您可以为同一表达式创建多个赋值字符串object@Phil你从哪里得到这样的阿凡达?只是好奇:)