【发布时间】:2017-09-19 22:07:36
【问题描述】:
我是 Angular 的新手,在尝试让 ng-model 显示对象值时无法弄清楚我做错了什么。
目标:
我想创建一个指令来读取对象并根据对象数据生成单选按钮。在这个对象里面我有 {logAs: 'radioGroupName'}。这应该存储到另一个名为 formData 的对象中。
示例:
{logAs: 'dog', options: [{option: 'poodle'}, {option: 'pitbull'}]}
这应该创建两个单选按钮,一个用于pittbull,另一个用于贵宾犬。两者都应该将 ng-model 设置为 dog。如果用户选择 Poodle,那么 formData 对象中的最终输出应该是:
{dog: 'poodle'}
问题:
我相信我已经很接近了,除了 ng-model 之外一切正常。在 ng-model 内部,实际的 Object 值(dog)不会按我的意愿显示,而是得到我输入的 Object 路径。
这是我的 html:
<div ng-app="test">
<div ng-controller="myController">
<p>formData: {{formData}}</p>
<h3>Static (updates formData)</h3>
<input type="radio" ng-model="formData.dog" value="pitbull"> Pitbull<br/>
<input type="radio" ng-model="formData.dog" value="Bull Dog"> Bull Dog<br/>
<input type="radio" ng-model="formData.dog" value="Poodle"> Poodle
<h3>Dynamic (wont update formData)</h3>
<directive form="formInfo"></directive>
</div>
这是 Javascript:
angular.module('test', [])
.controller('myController', function($scope){
$scope.formData = {};
$scope.formInfo = {
title: 'What type of dog do you have?',
logAs: 'dog',
options: [{option:'Pitbull'}, {option: 'Bull Dog'}, {option:'Poodle'}]
}
})
.directive('directive', function(){
return {
restrict: 'E',
template: '{{form.title}}<div ng-repeat="option in form.options"> <input type="radio" ng-model="form.logAs" value="jack" > {{option.option}}</div>',
scope: {
form: '='
}
}
});
如何让 ng-model 显示对象 ('dog') 的输出而不是对象路径? 这是fiddle
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-ng-model