2016-08-03 67 views
1

我目前正试图在通过ng-options选择另一个值时在控制器中设置变量。例如,如果根据titleCompanies中选择一个,则将myValue设置为特定公司的相应id。以下是HTML片段:在选择ng选项时更新控制器变量

<select multiple="" class="form-control" ng-model="myValue" 
      ng-options="d.title for d in Companies"></select> 


<select multiple="" class="form-control"> 
<option ng-placeholder="{{myValue}}"></option> 
</select> 
控制器

而且我CompanyCompaniesmyValue

function Company(title, last, pw, id) { 
    this.title = title; 
    this.id = id; 
} 
$scope.Companies = []; 

$scope.myValue = ''; 

这里是温控功能是种子Companies阵列:

$scope.getValues = function() { 
    $http.get('/route/to/names') 
    .success(function (data, status, headers, config) { 
     for (var i = 0; i < data.length; i++) { 
      $scope.Companies.push(new Company(data[i]['Title'],data[i]['ID'])); 
     } 
    }) 
}; 

程序背后的目的是根据所选的从数据库中进一步提取数据。我在页面上设置myValue作为选项的原因是为了确定操作是否已实现。任何意见如何解决这个或类似的问题将不胜感激!谢谢!

+1

'd.id为d.title对于公司中的d来说 - 确保使用正确的外壳,因为在公司构造函数中有'title'和'id'小写,但是适合放在for循环中。 – KreepN

+0

我是否缺少某种会触发'myVal'初始化的'ActionEvent'?或者仅仅是选择一个足以让数据绑定在我的程序中出现的选项?哦,它是大写的,因为它正在访问对象的特定属性“标题”和“ID”。 – WakaChewbacca

+0

那么你有你的模型绑定到一个空字符串,所以我假设你选择插入一个选项在开始这不是一个ID。它将受到你的选择的约束。你甚至不能在你的控制器中使用它,当你做出选择时,它会被添加到范围中。 – KreepN

回答

0
d.id as d.title for d in Companies 
  • 确保使用正确的外壳,因为你的标题和ID小写在你的公司构造函数,但在适当的套管for循环