从Javascript设置ng模型名称

从Javascript设置ng模型名称,javascript,html,angularjs,Javascript,Html,Angularjs,如何从javascript设置ng模型名称 HTML 非常感谢您的回答。尽可能简单 在你的控制器里有 $scope.foo = { 'modelOne': 'some text', 'modelTwo': 'some other text', 'modelThree': 'hello world' } 简单到 在你的控制器里有 $scope.foo = { 'modelOne': 'some text', 'modelTwo': 'some other te

如何从javascript设置ng模型名称

HTML

非常感谢您的回答。

尽可能简单 在你的控制器里有

$scope.foo = {
  'modelOne':   'some text',
  'modelTwo':   'some other text',
  'modelThree': 'hello world'
}
简单到 在你的控制器里有

$scope.foo = {
  'modelOne':   'some text',
  'modelTwo':   'some other text',
  'modelThree': 'hello world'
}

根据问题中的代码,您似乎希望每个模型都在模型数组中列出一个模型。如果是,只需执行以下操作:

<div ng-repeat="model in models">
    <input ng-model="model.name">
</div>

根据问题中的代码,您似乎希望每个模型都在模型数组中列出一个模型。如果是,只需执行以下操作:

<div ng-repeat="model in models">
    <input ng-model="model.name">
</div>
如果您的目标是通过在变量中提供相应的模型名称来设置ngModel,那么您仍然可以使用旧的good轻松实现

假设您有变量$scope.modelName='modelOne',您希望设置模型,以便可以在模板中使用{{modelOne}},或者在控制器中使用$scope.modelOne。使用括号表示法很容易。在本例中,它将是$scope[$scope.modelName]=“something”

在您的例子中,使用ngRepeat有一个警告,因为每个迭代都有自己的子范围,所以为了在适当的范围内建立模型,您需要使用$parent引用初始范围。因此,它将是:

<div ng-repeat="model in models">
    <input ng-model="this.$parent[model.name]">
</div>
所以这里的关键是,无论是什么,它总是指向控制器中的scope对象$scope。由于它是一个对象,您只需使用它访问具有变量名的属性

演示:

如果您的目标是通过在变量中提供相应的模型名称来设置ngModel,那么您仍然可以使用旧的good轻松实现

假设您有变量$scope.modelName='modelOne',您希望设置模型,以便可以在模板中使用{{modelOne}},或者在控制器中使用$scope.modelOne。使用括号表示法很容易。在本例中,它将是$scope[$scope.modelName]=“something”

在您的例子中,使用ngRepeat有一个警告,因为每个迭代都有自己的子范围,所以为了在适当的范围内建立模型,您需要使用$parent引用初始范围。因此,它将是:

<div ng-repeat="model in models">
    <input ng-model="this.$parent[model.name]">
</div>
所以这里的关键是,无论是什么,它总是指向控制器中的scope对象$scope。由于它是一个对象,您只需使用它访问具有变量名的属性


演示:

您想将模型设置为什么。。。?ng model=model.name应该可以工作…是否要设置模型名称,以便以后可以执行{{modelOne}}?要将模型设置为什么。。。?ng model=model.name应该可以工作…是否要设置模型名,以便以后可以执行{{modelOne}}?很好,但看起来不是OP想要的。@dfsq我重新考虑后也意识到,到那时我已经更新了我的答案谢谢你,我该如何改变例如:第二个模型的价值?@Václavpvlíček根据你的实际需要,你的问题有点模糊,一个或另一个解决方案可以解决你的问题。您不必担心您将更改哪个模型:因为它处于ng重复中,所以您将拥有与您拥有的模型一样多的输入。若要更改第二个模型,您将编辑第二个输入。您不能直接这样做,但可以在两者之间使用对象。你可以。很好,但看起来不是OP想要的。@dfsq我也意识到,经过再三考虑,我已经更新了我的答案。谢谢你,我可以如何更改例如:第二个模型的价值?@Václavvlíček根据你的实际需要,你的问题有点模糊,一个或另一个解决方案可以解决你的问题。您不必担心您将更改哪个模型:因为它处于ng重复中,所以您将拥有与您拥有的模型一样多的输入。若要更改第二个模型,您将编辑第二个输入。您不能直接这样做,但可以在两者之间使用对象。事实上,你们可以。谢谢你们的提示,但这仍然是黑客,因为你们需要使用$parent。这是一个具有相同精神但使用控制器的叉子:它不粗糙,如果没有ngRepeat,您就不需要$parent。但在这种情况下,这是绝对必要的,而且是正确的。使用controller as对我来说是一种欺骗,因为:谢谢你们的提示,但这仍然是一种黑客行为,因为你们需要使用$parent。这是一个具有相同精神但使用控制器的叉子:它不粗糙,如果没有ngRepeat,您就不需要$parent。但在这种情况下,这是绝对必要的,而且是正确的。使用控制器对我来说是欺骗,因为:
<div ng-repeat="model in models">
    <input ng-model="this.$parent[model.name]">
</div>