select 上的 ng-change 抛出错误
ng-change on select throwing an error
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>
控制器
$scope.released=function() {
console.log('pending');
}
$scope.releasedSeller = {
options : [{
item: 'Pending'
}, {
item: 'Released'
}]
}
我正在使用 ng-change 调用 selectbox 中的函数。但是我可以获得选项数据,它正在包装控制器,我在这里从 controller.i 获取支付数据我通过在 app.js (ui-路由器)中提及来使用控制器但是当我 select 某些选项时,它会抛出如下错误。
angular.js:13236 TypeError: v2.released is not a function
at fn (eval at compile (angular.js:14086), <anonymous>:4:215)
- 确保您的控制器包含 html 代码
- 检查您的代码是否如下所示。
- 确保您的 app/controllers 包含在您的 index.html
中
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;
};
});
<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>
我认为您正在使用 ng-controller 作为语法,所以出现此错误 v2.released 不是函数
将 v2.released 更改为刚刚在您的 html 文件中发布
当您在 "released" 变量中绑定所选值时,这将在范围内创建一个新变量并覆盖您在控制器中编写的旧 "released"(函数)。
错误的方式:
ng-改变="released()"
ng-模型="released"
正确的方法:
ng-改变="released()"
ng-模型="selectedReleased"
<select ng-change="released()" ng-options="released.item for released in releasedSeller.options" ng-model="selectedReleased" ></select>
我想这就是导致错误的原因。
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>
控制器
$scope.released=function() {
console.log('pending');
}
$scope.releasedSeller = {
options : [{
item: 'Pending'
}, {
item: 'Released'
}]
}
我正在使用 ng-change 调用 selectbox 中的函数。但是我可以获得选项数据,它正在包装控制器,我在这里从 controller.i 获取支付数据我通过在 app.js (ui-路由器)中提及来使用控制器但是当我 select 某些选项时,它会抛出如下错误。
angular.js:13236 TypeError: v2.released is not a function
at fn (eval at compile (angular.js:14086), <anonymous>:4:215)
- 确保您的控制器包含 html 代码
- 检查您的代码是否如下所示。
- 确保您的 app/controllers 包含在您的 index.html 中
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;
};
});
<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>
我认为您正在使用 ng-controller 作为语法,所以出现此错误 v2.released 不是函数
将 v2.released 更改为刚刚在您的 html 文件中发布
当您在 "released" 变量中绑定所选值时,这将在范围内创建一个新变量并覆盖您在控制器中编写的旧 "released"(函数)。
错误的方式:
ng-改变="released()"
ng-模型="released"
正确的方法:
ng-改变="released()"
ng-模型="selectedReleased"
<select ng-change="released()" ng-options="released.item for released in releasedSeller.options" ng-model="selectedReleased" ></select>
我想这就是导致错误的原因。