select 中的 ng-options 返回对象而不是字符串
ng-options in select returning an Object instead of String
我正在努力学习 Angular 并且我处于最基本的步骤中。我对此进行了搜索,但找不到任何可以帮助我的东西。
我对 ng-options 有疑问。当我按下触发 addSword(sword)
的按钮时,我希望它将 $scope.elems.object.name
插入 {{sword.elem}}
,但我收到的却是 $scope.elems.object
。
更好的解释是,sword.elem
显示 {"name":"Water" , "beats":"Fire"}
而不仅仅是 'Water'
。我可以使用 sword.elem.elem
,但我可以看到这里有问题。
有些奇怪:我的 Select 菜单显示正确的值。
感谢您的帮助,如果有关于此问题的答案但我找不到,我们深表歉意。
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='sword.elem' 收到 $scope.elems.name。
提交我的表单后,将创建以下对象:
{"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}}。
我正在努力学习 Angular 并且我处于最基本的步骤中。我对此进行了搜索,但找不到任何可以帮助我的东西。
我对 ng-options 有疑问。当我按下触发 addSword(sword)
的按钮时,我希望它将 $scope.elems.object.name
插入 {{sword.elem}}
,但我收到的却是 $scope.elems.object
。
更好的解释是,sword.elem
显示 {"name":"Water" , "beats":"Fire"}
而不仅仅是 'Water'
。我可以使用 sword.elem.elem
,但我可以看到这里有问题。
有些奇怪:我的 Select 菜单显示正确的值。
感谢您的帮助,如果有关于此问题的答案但我找不到,我们深表歉意。
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='sword.elem' 收到 $scope.elems.name。 提交我的表单后,将创建以下对象:
{"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}}。