的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中的函数。但是我可以获取期权数据,它包装了控制器,我从控制器那里获得付款数据。我通过在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)
最佳答案
当您将所选值绑定到“ released”变量中时,这将在范围内创建一个新的varialbe,并覆盖您在控制器中编写的旧“ released”(函数)。
错误的方法 :
ng-change =“ released()”
ng-model =“ released”
正确的方法 :
ng-change =“ released()”
ng-model =“ selectedReleased”
<select ng-change="released()" ng-options="released.item for released in releasedSeller.options" ng-model="selectedReleased" ></select>
我猜这是导致错误的原因。