ng-options在select中返回一个Object而不是String

ng-options in select returning an Object instead of String

本文关键字:Object 一个 String select 返回 ng-options      更新时间:2023-09-26

我正在尝试学习Angular,我在非常基本的步骤。我已经搜索过了,但没有找到任何可以帮助我的东西。

我有一个问题与ng选项。当我点击触发addSword(sword)的按钮时,我希望它将$scope.elems.object.name插入{{sword.elem}},但相反,我收到的是$scope.elems.object。更好的解释是,sword.elem显示{"name":"Water" , "beats":"Fire"}而不仅仅是'Water'。我可以使用sword.elem.elem,但我可以看到这里有问题。

有点奇怪:我的选择菜单显示正确的值。

谢谢你的帮助,抱歉,如果有一些关于这个问题的答案,我找不到。

index . html

<tr ng-repeat="sword in swords">
    <td>{{sword.name}}</td>
    <td>{{sword.attack}}</td>
    <td>{{sword.desc}}</td>
    <td>{{sword.elem.name}}</td>
</tr>
...
<select class="form-control" ng-model="sword.elem" 
    ng-options="elem.name for elem in elems">
    <option value="">Selecione uma elem</option>
</select>
<button class="btn btn-primary btn-block" ng-click="addSword(sword)" 
    ng-disabled="!sword.name || !sword.elem || !sword.attack">Add Sword</button>
控制器

$scope.elems = [
    {name: "Fire", beats: "Earth"},
    {name: "Water", beats: "Fire"}
];
$scope.addSword = function(sword){
        $scope.swords.push(angular.copy(sword));
        delete $scope.sword;
    }

据我所知,您想将选定的剑添加到您的剑列表中。你需要使用ngOptions select As

标记:

<select class="form-control" ng-model="sword" 
    ng-options="elem as elem.name for elem in elems">
    <option value="">Selecione uma elem</option>
</select>
<button class="btn btn-primary btn-block" ng-click="addSword(sword)" 
    ng-disabled="!sword">Add Sword</button>

看到恰好

嗯,我试过了。读了Angular文档,我也不明白。

我想要的是将ng-options选项传递给ng-model 'sword-elem'。ng-options选择由两个对象提供:

        $scope.elems = [
        {name: "Fire", beats: "Earth"},
        {name: "Water", beats: "Fire"}
    ];

我想要我的ng-model='剑。` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `在我的表单提交之后,创建了以下对象:

{"name":"Stack Question",
"attack":"66",
"desc":"You shall answer this sword.",
"elem": {"name":"Fire","beats":"Earth"}
}

但我想接收这样的东西:

{"name":"Stack Question",
"attack":"66",
"desc":"You shall answer this sword.",
"elem": "Fire"}
}

我目前的解决方法是打印{{sword.elem.name}}而不是仅仅打印{{sword.elem}}。

相关文章: