将ng-model值添加为数组中的分组子项

时间:2014-04-10 21:41:18

标签: json angularjs angular-ngmodel

学习python让我忘记了所有的角度,这就是我的故事,我坚持不懈。它甚至让我忘记了我的谷歌技能,因为我无法在任何地方找到类似的问题。最接近的可能是How to append to a json object in angular js,但也不起作用。

我有十套两个输入字段,标题和描述。我想将它们作为子项添加到数组中,所以我最终会在我的json中使用10个属性,并且每个属性又有两个子属性。我已经尝试了推动,连续,甚至是老式的+ =绝望,但没有任何工作。我必须完全忽视这一点。

这是每行的样子,虽然数字会发生变化(从1到10):

<label class="sr-only" for="shorttitle1">short title</label>
<input type="text" class="form-control"  ng-click="addIdea()" ng-model="idea1.title" placeholder="title">
<label class="sr-only" for="description1">description</label>
<input type="text" class="form-control" ng-click="addIdea()" ng-model="idea1.description" placeholder="description">

在我的控制器中,这是我根据上面的链接尝试的版本,这不比concat或push更好用:

$scope.ideas = [
        {idea : $scope.idea1.title, $scope.idea1.description},
        {idea : $scope.idea2.title, $scope.idea2.description},
        {idea : $scope.idea3.title, $scope.idea3.description}
];

我不断收到点的意外标记错误(如$ scope-dot-idea1中的点)。当我将简单文本作为测试时,我会在结束括号中收到意外的令牌错误。

我甚至尝试过一个watchCollection,只是为了看看控制器是否会引起注意,但我从中得不到任何东西。我试过只想看idea1,然后是$ scope.idea1,然后是$ scope.idea1.title,而watchCollection只是坐在那里。

这就是我希望它最终看起来像粗略的:

$scope.ideas = [
    {
        type : 'title goes here',
        description : 'description goes here'
    },{
        type : 'title goes here',
        description : 'description goes here'
    },{
        type : 'title goes here',
        description : 'description goes here'
    }
];

我已经检查了非常明显的 - ng-app与ng-controller不在同一级别,我正在调用正确的控制器,我没有任何古怪的拼写错误。

帮助?

2 个答案:

答案 0 :(得分:1)

您错过了对象定义中的描述键。

$scope.ideas = [
    {idea : $scope.idea1.title, desc: $scope.idea1.description},
    {idea : $scope.idea2.title, desc: $scope.idea2.description},
    {idea : $scope.idea3.title, desc: $scope.idea3.description}
];

答案 1 :(得分:0)

好吧,感谢@BenCr解决了一个问题之后,我发现了真正的问题。它在这里:

<input type="text" class="form-control"  ng-click="addIdea()" ng-model="idea1.title" placeholder="title">

没有名字。无论出于何种原因,你必须有一个与ng-model匹配的名字,然后angular会很好。我已经习惯了传统验证的ID和名称,我不知道为什么我这次忘了它们。但是,一旦我重新加入,一切都表现得很好。

<input type="text" class="form-control"  ng-model="idea1title" name="idea1title" placeholder="title">

另一个细节是,您不能拥有像idea-dot-title-one这样的表单名称;你必须拿出点。 Ng模型可以处理它,但名称不能,并且两者必须匹配。