通常情况下,Angular 函数被调用两次是因为它们被绑定到了两个不同的作用域中。为了解决这个问题,我们可以使用“controller as”语法或者使用 $scope.$apply()
函数。
以下是使用 “controller as” 语法的示例代码:
app.controller('myCtrl', function() {
var vm = this;
vm.myFunction = function() {
// 函数代码
}
});
在 HTML 中使用 ng-controller
指令来引用控制器,并使用 ng-click
来调用函数:
在这个例子中,我们使用了 controller as
语法来重命名控制器,然后我们通过 ng-click
来直接调用控制器中的函数。
另一种解决方案是使用 $scope.$apply()
函数来通知 Angular 更新模型对象。以下是示例代码:
app.controller('myCtrl', function($scope) {
$scope.myFunction = function() {
// 函数代码
};
$scope.$apply();
});
在这个例子中,我们在函数定义后调用 $scope.$apply()
函数来通知 Angular 更新模型对象。这将确保函数只被调用一次。