AngularJS以ng-repeat格式保存数据

时间:2015-02-03 19:55:26

标签: angularjs

我有一个语言表,一个包含自定义表名的表和一个包含翻译的表。 现在我想在所有语言中插入一个新表。在我的控制器中,我询问了语言表中的元素数量并生成了视图:

var countLanguages = function () {
   vm.languages = configService.getGlobalLanguageList();
};

和视图:

<ul ng-repeat="language in vm.languages">

  <h3>{{translations}}</h3>

  <div>
    <label for="EditLanguageLabel" ng-bind="language.label"></label>
    <input type="text" ng-model="translations" id="EditLanguageLabel" required />
  </div>
</ul>

但是如何获取所有字段并使用语言的id和自定义表的id将数据保存在翻译表中? 无法在Controller中获取$ scope.translations,因为每个ng-repeat都有自己的范围,对吧?

vm.save = function ()
{
   var test = $scope.translations;
};

解决此问题的正确方法是什么。 一种可能的解决方案是加载空的自定义表对象并添加语言。我认为肯定会有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

我假设您想要更改语言的标签。如果是这样,您需要做的就是将输入的ng-model设置为语言变量:

<input type="text" ng-model="language.label" id="EditLanguageLabel" required />

这会将输入的值绑定到语言的标签上,并且无论何时调用得到language.label字段,它都将是输入中的版本。

此外,当循环(例如:language.label)将在范围内时,ng-repeat不会创建自己的范围内的任何内容,而这些范围不在您创建的对象上,因此您的翻译实际上是$ scope。翻译。如果您希望每种语言都有自己的翻译,则需要将该变量添加到返回的对象数组中,并将模型设置为:

<input type="text" ng-model="language.translations " id="EditLanguageLabel" required />

上面的代码将使用输入中的值填充语言对象上的翻译变量。