0

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

我有十组两个输入字段,标题和描述。我想将它们作为子元素添加到数组中,因此我的 json 中将有十个属性,而每个属性又具有两个子属性。我已经尝试过 push、concat,甚至是老式的 += 绝望,但没有任何效果。我一定完全错过了显而易见的事情。

这是每行的样子,尽管数字发生了变化(从 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 不在同一级别,我正在调用正确的控制器,我没有任何古怪的拼写错误。

帮助?

4

2 回答 2

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}
];
于 2014-04-10T21:56:09.787 回答
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-model 可以处理,name 不行,两者要匹配。

于 2014-04-10T23:14:24.560 回答