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)
答案 0 :(得分:2)
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;
答案 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文件中发布