我试图在最基本的步骤中学习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;
}
答案 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}}。