angularjs - 当选定的 ng-option 更改时获取值

标签 angularjs angularjs-scope

我的 .html 页面中有一个下拉列表,

下拉菜单:

<select ng-model="blisterPackTemplateSelected" data-ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates">
    <option value="">Select Account</option>
</select>

我想在用户选择一个值时执行一个操作。所以在我的 Controller 中我做了:

Controller :

$scope.$watch('blisterPackTemplateSelected', function() {
    alert('changed');
    console.log($scope.blisterPackTemplateSelected);
});

但是更改下拉列表中的值不会触发代码:$scope.$watch('blisterPackTemplateSelected', function()

因此,我尝试了另一种方法,在选择标记上使用:ng_change = 'changedValue()'

功能:

$scope.changedValue = function() {
   console.log($scope.blisterPackTemplateSelected);
}

但是 blisterPackTemplateSelected 存储在子范围中。我读到父级无法访问子级范围。

当下拉列表中的选定值发生更改时,执行某些操作的正确/最佳方法是什么?如果是方法 1,我的代码做错了什么?

最佳答案

正如Artyom所说,你需要使用ngChange并将 ngModel 对象作为参数传递给 ngChange 函数

示例:

<div ng-app="App" >
  <div ng-controller="ctrl">
    <select ng-model="blisterPackTemplateSelected" ng-change="changedValue(blisterPackTemplateSelected)" 
            data-ng-options="blisterPackTemplate as blisterPackTemplate.name for blisterPackTemplate in blisterPackTemplates">
      <option value="">Select Account</option>
    </select>
    {{itemList}}     
  </div>       
</div>

js:

function ctrl($scope) {
  $scope.itemList = [];
  $scope.blisterPackTemplates = [{id:1,name:"a"},{id:2,name:"b"},{id:3,name:"c"}];

  $scope.changedValue = function(item) {
    $scope.itemList.push(item.name);
  }       
}

实例:http://jsfiddle.net/choroshin/9w5XT/4/

关于angularjs - 当选定的 ng-option 更改时获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016565/

相关文章:

javascript - AngularJS:如何将值从 Controller 传递到服务方法?

javascript - AngularJS 如何同时放置 ng-class 和 CSS 类

javascript - Angular 拦截器 - 从 500 错误获取消息

javascript - AngularJS 通过 $compile 获取动态内容的范围未附加到 Controller 范围

angularjs - 为什么格式化程序不适用于隔离范围?

javascript - 使用指令时未定义 ngModel - Angularjs Controller

javascript - 动态更新和检查对象数组

javascript - 使用 RequireJS 并注入(inject) Angular $templateCache

javascript - 在 ng-click 上设置并显示当前数据?

javascript - ng-change 和 ng-click 可以与单个按钮一起使用吗?