ng-change on select抛出错误

时间:2016-07-07 05:47:50

标签: javascript angularjs function angularjs-ng-change

HTML

            <tr dir-paginate="sale in payments | itemsPerPage: 6">
                <td>{{sale.date}}</td>
                <td>{{sale.transaction_id}}</td>
                <td>{{sale.artist_details.seller_num}}</td>
                <td>{{sale.artist_details.name}}</td>
                <td>{{sale.exc_vat}} Kr</td>
                <td>{{sale.total_price}}</td>
                <td><select ng-change="released()" ng-options="released.item  for released in releasedSeller.options" ng-model="released" ></select><span>{{released.item}}</span></td>
            </tr>

CONTROLLER

 $scope.released=function() {
        console.log('pending');
    }
    $scope.releasedSeller = {
        options : [{
                item: 'Pending'
                }, {
                item: 'Released'
            }]
    }

我正在使用ng-change来调用selectbox中的函数。但我可以得到选项数据,它是包装控制器,我从控制器这里得到支付数据。我在app.js(ui-router)中提到使用控制器但是当我选择一些选项时,它是抛出如下错误。

angular.js:13236 TypeError: v2.released is not a function
at fn (eval at compile (angular.js:14086), <anonymous>:4:215)

3 个答案:

答案 0 :(得分:2)

  • 确保您的控制器包装了html代码
  • 检查您的代码是否如下所示。
  • 确保您的app / controllers包含在index.html

&#13;
&#13;
var app = angular.module('app', []);
app.controller('DemoCtrl', function($scope) {
  $scope.items = [{
    'name': 'a'
  }, {
    'name': 'b'
  }, {
    'name': 'c'
  }, {
    'name': 'd'
  }];
  $scope.showSelected = function() {
    $scope.selectedItem = $scope.itemModel;
  };
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="app">
  <div ng-controller="DemoCtrl">
    <select ng-options="item.name for item in items" ng-change="showSelected(item)" ng-model="itemModel"></select>
    <h5> Selected item: {{selectedItem}}</h5>
  </div>
</body>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

当你绑定“已释放”变量中的选定值时,它将在范围内创建一个新的变量,并覆盖你在控制器中写入的旧“已释放”(函数)。

错误的方式:

纳克变= “释放()”

NG-模型= “释放”

正确的方式:

纳克变= “释放()”

NG-模型= “selectedReleased”

<select ng-change="released()" ng-options="released.item  for released in releasedSeller.options" ng-model="selectedReleased" ></select>

我猜这就是导致错误的原因。

答案 2 :(得分:0)

我认为你正在使用ng-controller作为语法,所以这个错误即将发生v2.released不是一个函数

将v2.released更改为刚刚在html文件中发布