我是 Angular 的新手,并且使用一个函数来使用 $http 加载数据,这对我有用。之后我决定进行一些表单验证以查看它的行为。我可以单独完成它,但对如何将我的代码与上面的代码合并以便我的两个函数都能正常工作感到有点困惑。 代码如下:
var App = angular.module('App', []);
App.controller('DataCtrl', function($scope, $http) {
$http.get('any url or file')
.then(function(result) {
$scope.data = result.data;
});
});
Controller 在 body 属性中定义如下:
<body ng-controller="DataCtrl">
现在,当我将其他函数放在同一个 app.js 文件中时,它不起作用,任何人都可以帮我解决这个问题,验证代码是这样的:
App.controller('DataCtrl', function($scope) {
$scope.submitForm = function(isValid) {
if (isValid) {
alert('submitting data');
}
};
});
我唯一需要做的就是让它们像这样工作: 1.加载数据(工作中) 2. 借助第二个代码块实现验证。
最佳答案
尝试解释一下它是如何工作的:)
当浏览器遇到这一行<body ng-controller="DataCtrl">
它将查找在 Angular js 中注册的 Controller 的定义。
但就你而言,我猜你注册了 Controller 两次,就像
第一
App.controller('DataCtrl', function($scope, $http) {
$http.get('any url or file')
.then(function(result) {
$scope.data = result.data;
});
});
第二
App.controller('DataCtrl', function($scope) {
$scope.submitForm = function(isValid) {
if (isValid) {
alert('submitting data');
}
};
});
因此,其中一个定义会覆盖另一个定义,具体取决于脚本文件中存在的注册方法的顺序。
因此,为了解决这个问题,您只需要使用一个注册 Controller :-
App.controller('DataCtrl', function($scope, $http) {
$http.get('any url or file').then(function(result) {
$scope.data = result.data;
});
$scope.submitForm = function(isValid) {
if (isValid) {
alert('submitting data');
}
};
});
代码来源:- S Vinesh
关于javascript - 在 AngularJs 中使用多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30950352/