Javascript 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}

我有一个简单的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>


有任何线索吗?

请确保您的
$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>语句,并且仍在经历问题,你应该考虑更新问题中的代码,而不是在评论中提到一些其他未知的组合,因为这似乎是目前许多吸引人的主要问题。第二个解决方案工作得很好,非常感谢。我理解这个问题。