Javascript AngularJS:在控制器中具有多个功能
我有一个简单的AngularJS控制器,我希望它有两个不同的功能:Javascript AngularJS:在控制器中具有多个功能,javascript,angularjs,Javascript,Angularjs,我有一个简单的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}
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>
有任何线索吗?请确保您的
$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>
{{item}}
正如我在评论中所说,这里没有回声“你好,世界!”代码>在javascript中。如果要在DOM上编写该短语,则必须将其用作简单表达式。就像:
$scope.helloWorld='helloWorld!'代码>
然后在HTML中,您只需像{{{helloWorld}}
那样调用它。
我看到你在用一个函数测试它。在这种情况下,您应该返回字符串“Hello World!”像
$scope.helloWorld = function () {
return 'Hello World';
};
在HTML中:
{{ helloWorld() }}
在这种情况下,您只需“记录”Hello World
到浏览器控制台(我对此表示怀疑,因为您没有注意到JS错误):不要使用控制台.log()代码>。改用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 })
.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!');
};
})
没有回声“你好,世界!”代码>在javascript中。解释你想用它实现什么,因为代码在很多方面都是错误的。我想用两个按钮创建一个应用程序,每个按钮调用不同的函数。对不起,我有点累了。我对console.log也有同样的问题,但绝对没有理由不能有两个不同的$scope
属性,它们都是这样的函数。如果你已经替换了<代码> Engule< /Cord>语句,并且仍在经历问题,你应该考虑更新问题中的代码,而不是在评论中提到一些其他未知的组合,因为这似乎是目前许多吸引人的主要问题。第二个解决方案工作得很好,非常感谢。我理解这个问题。