AngularJS:在一个控制器中具有多个功能
AngularJS : having multiple functions in a controller
我在AngularJS中有一个简单的控制器,我希望它有两个不同的功能:
var app = angular.module('searchApp', []);
app.controller('searchCtrl', function($scope, $http, $log) {
//1st function
$scope.search = function() {
$http.post('server.php', { "data" : $scope.keywords})
.success(function(data, status) {
$scope.result = data;
})
};
//2nd function
$scope.tableClick = function() {
$log.log('Hello World!');
};
})
我认为语法中有一个问题,因为这个脚本只有在我删除第二个函数时才能工作。
当我使用带有2个函数的脚本时(所以,我发布了什么),我得到了以下html元素的{{x}}:
<tr ng-repeat="x in result">
<td><a href="wwww.test.com" >{{ x }}</a></td>
有线索吗?
正如我在评论中所说,javascript中没有echo 'Hello World!'
。如果你想把这个短语写在DOM上,那么你必须把它当作一个简单的表达式。就像:
$scope.helloWorld = 'Hello World!';
然后在HTML中,您可以简单地将其称为{{helloWorld}}
。我看到你正在用一个函数测试它。在这种情况下,您应该return
字符串"Hello World!"像
$scope.helloWorld = function () {
return 'Hello World';
};
在HTML:中
{{ helloWorld() }}
如果您想简单地将Hello World!
"记录"到浏览器控制台(我对此表示怀疑,因为您没有注意JS错误):不要使用console.log();
。使用AngularJS的内置服务$log代替
一个更好的代码
不管怎样,如果我是你,我会用不同的方式编写代码。参见
var app = angular.module('searchApp', []);
app.controller('searchCtrl', function ($scope, $http, $log) {
//1st function
$scope.search = function () {
$http.post('server.php', { "data" : $scope.keywords })
.then(function (resp) { //use then instead of success/error
return resp.data;
}, function inCaseOfErrors (err) { //named just for teaching purposes
$log.log(err);
});
};
//2nd function
$scope.tableClick = function () {
$log.log('Hello World!');
};
})
请确保您的$scope.result
具有正确的值。还要注意,echo
在javascript中并不存在。
在下面的代码中,我取消了服务器调用,并使用了硬编码数据,只是为了测试:
var app = angular.module('searchApp', []);
app.controller('searchCtrl', function($scope, $http) {
$scope.result = ["apple", "orange", "raisin", "banana"];
//1st function
$scope.search = function() {
//$http.post('server.php', { "data" : $scope.keywords})
//.success(function(data, status) {
//$scope.result = data;
//})
};
//2nd function
$scope.tableClick = function(item) {
console.log("someone clicked the table! Row: " + item);
};
})
Html:
<table>
<tr ng-repeat="item in result">
<td data-ng-click="tableClick(item)">{{ item }}</td>
</tr>
</table>
相关文章:
- 为什么ng控制器不调用或工作或功能不工作
- 角度控制器功能赢得'不按指令工作
- 如何检查注入控制器中的功能
- 角度控制器功能不;在指令内部调用时,似乎无法始终如一地工作
- angular应用程序中的浏览器功能检测:使用服务、指令、控制器
- 控制器功能在 Angular.js 中不起作用
- AngularJs 控制器中的实时时钟功能
- 如何在控制器中测试功能
- 控制器切换后匿名功能中的访问服务数据发生变化
- AngularJS控制器内部的功能
- 从 AngularJS 中的控制器功能发送数据以供查看
- 将控制器的功能添加到角度中的特定视图
- ng重复调用控制器功能的次数太多
- AngularJS控制器之间共享代码/方法/功能
- 无法理解Angular JS中的控制器功能
- Angular:控制器范围内的可重用功能
- 如何在Angular JS中的控制器之间共享搜索功能
- 当滚动$(窗口)时,角度控制器未触发滚动功能
- 如何使$filter在angularjs中的所有控制器功能中可用
- AngularJS:在一个控制器中具有多个功能