的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>


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

09-17 13:04