select-options in select返回Object而不是String

时间:2015-08-13 02:51:05

标签: javascript angularjs ng-options

我试图在最基本的步骤中学习Angular和我。我已经搜索了这个,但找不到任何可以帮助我的东西。

我遇到了ng-options的问题。当我点击触发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;
    }

2 个答案:

答案 0 :(得分:2)

根据我的理解,您想要将选定的剑添加到您的剑列表中。您需要使用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>

请参阅plunker

答案 1 :(得分:-1)

好吧,我尝试过一些事情。阅读Angular Docs并且也无法弄明白。

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

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

我希望我的ng-model ='sword.elem'接收$ scope.elems.name。 提交表单后,将创建以下对象:

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

但我正试图收到这样的东西:

{{1}}

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