嗨,我是很新的角度,但使用选择指令角度选择指令,并具有所选择的选项填充视图
这里我有麻烦是我的HTML
<div ng-app>
<div ng-controller="MyTestCtrl">
<button ng-click="loadData()">LOAD ME</button>
<button ng-click="sendData()">SEND ME</button>
<div>
<div>{{formObject}}</div>
<div>My name is {{_userView.name}}</div>
<div>I like to go {{formObject.activity_id.name}}</div>
</div>
<div>
<!--For solution 1 -->
<select ng-model="formObject.user_id"
ng-options="o.id as o.name for o in userStore">
</select>
<!--For solution 2 -->
<select ng-model="formObject.activity_id"
ng-options="o.name for o in activityStore track by o.id">
</select>
</div>
</div>
</div>
在我的控制我有一堆数据存储用于填充select指令的选项。随着id和名称,他们有其他元数据将用于显示目的
另外在控制器中有一个表单对象,它持有将传递到服务器的ID。服务器还将响应与IDS
function MyTestCtrl($scope, $filter) {
$scope.formObject = {
user_id: null,
activity_id: null
};
$scope.userStore = [
{id:50, name: 'Chris R.', address:'456 Far Away'},
{id:65, name: 'Ryan S.', address:'029 Somewhat Near'},
{id:70, name: 'Tommy K.', address:'856 Underground'}
];
$scope.activityStore = [
{id:10, name: 'Running'},
{id:13, name: 'Swimming'},
{id:16, name: 'Biking'}
];
...
}
进行选择时从下拉制成的对象,显示应该相应地使用适当的数据 当数据从服务器加载更新本身,显示应该更新自身因此与适当的数据 当数据被发送到服务器,它需要是在正确的格式(ID只,没有额外的数据)
我有一些解决方案,但我希望找到一个更“ “方法。也许我从ng选项中遗漏了一些东西。这几乎就像我想在表单对象的ID作为外键的数据在数据存储
解决方案1: 设置$范围$腕表()上的表单对象的ID并在有变化时让它搜索数据存储区。存储从所述数据存储中创建对象到私有模型,并使用该专用模型视图中的用于显示
解决方案2: 绑定对象到表单对象并直接使用的形式的对象供显示。加载数据时,搜索对象的数据存储并使用对象覆盖表单标识。发送数据时,从对象中抽取id并将其分配给表单ID。不幸的是,该方法具有拔毛步
这里是一个小提琴后消隐下拉的副作用:http://jsfiddle.net/D95c3/
是否还有更好的,更有棱角的方式来做到这一点?
将changeUser(填充)做同样的事情$范围。$表()之类 '$ scope.changeUser = function(){ var found = $ filter('filter')($ scope.userStore,{id:$ scope.formObject.user_id},true);如果(found.length){0,1,2,...,$ scope._userView = found [0]; } }' 我仍然会使用'
是的,您将可以在'changeUser'函数中完全访问'$ scope.formObject',因为AngularJS通过'ng-model'绑定到'$ scope.formObject'。 – Skinty