情况:
我有以下选择:
<select ng-model="model" ng-options="o as o.name for o in options track by o.code">
<option value="">- Default -</option>
</select>
我的options
数据是这样的:
$scope.options = [{id: 1, code: 'foo', name: 'Foo!'}, {id: 2, code: 'bar', name: 'Bar!'}];
我想做什么:
我希望我的选择具有预先选择的值。我的约束是我只知道我的对象的code
属性。在track by
符号的帮助下,我可以这样做:
$scope.model = {code: 'bar'};
并且它有效,所选的选择值是“Bar!”
问题:
当我将此数据发送到后端时,我需要发送我的对象的id
属性。发送的数据为{code: 'bar'}
,但不是{id: 2, code: 'bar', name: 'Bar!'}
。
对我而言,这是正常的行为...因为我存储在我的模型{code: 'bar'}
中并且我没有更改所选的值。
结论:
当options
中存在默认值时,有没有办法告诉AngularJS将model
列表中的值复制到model
(当使用{匹配时) {1}}符号)?
信息:我知道我可以做这样的事情
track by
(用一些逻辑来确定索引......)但是我想要一些更神奇的东西......如果它可能......:D
答案 0 :(得分:2)
OP Info :我知道我可以做这样的事情$ scope.model = $ scope.options [2](用一些逻辑确定索引...)但是我想更神奇的东西...如果有可能......:D
我的3个物品有3个魔法
$scope.model = $scope.options.filter(function(item) {
return item.code=== 'bar';
})[0];
<2>魔法2:
app.filter('getById', function() {
return function(input, id) {
var i=0, len=input.length;
for (; i<len; i++) {
if (+input[i].id == +id) {
return input[i];
}
}
return null;
}
});
$scope.model = $filter('getById')($scope.options, 2);
angular.forEach($scope.options, function(option) {
$scope.model = option.name == "name";
if($scope.model !=null){break}
});
答案 1 :(得分:1)
您需要在from pymongo import MongoClient
client = MongoClient("localhost", 27017)
db = client["tutorial"]
employees = db["employees"]
employees.insert({"name": "Lucas Hightower", 'gender':'m', 'phone':'520-555-1212', 'age':8})
cursor = employees.find()
for employee in cursor:
print(employee)
上添加ng-change
,然后创建一个函数来查找所选选项及其对应的JSON模型。使用此
HTML
<select>
CONTROLLER
<div ng-app='app' ng-controller='mainCtrl'>
<select ng-model="model" ng-options="o as o.name for o in options track by o.code"
ng-change='getValue(this)'>
<option value="">- Default -</option>
</select>
</div>
每当您在angular.module('app',['QuickList']).controller('mainCtrl', function($scope){
$scope.options = [{id: 1, code: 'foo', name: 'Foo!'}, {id: 2, code: 'bar', name: 'Bar!'}];
$scope.model = {code: 'bar'};
$scope.getValue = function(item){
console.log($scope.selectedOption = item.model);
}
});
框中选择该选项时,您将在控制台中看到该选项的实际JSON对象。
这是工作JSFIDDLE