Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从控制器传递数组_Javascript_Arrays_Angularjs - Fatal编程技术网

Javascript 从控制器传递数组

Javascript 从控制器传递数组,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我是新手。这里有一个函数,我想从数组中选择一个随机名称来显示 在我的控制器中,我设置了一个名为names的数组。然后我想将它传递到我的$scope.message函数中,并从MyHTML调用它 我一直收到一个错误: "Error: [$interpolate:interr] Can't interpolate: {{message(names)}} {{}} 我的控制器: eventsApp.controller("EventController", func

我是新手。这里有一个函数,我想从数组中选择一个随机名称来显示

在我的控制器中,我设置了一个名为
names
的数组。然后我想将它传递到我的
$scope.message
函数中,并从MyHTML调用它

我一直收到一个错误:

"Error: [$interpolate:interr] Can't interpolate: 
        {{message(names)}}
        {{}}
我的控制器:

eventsApp.controller("EventController", function EventController($scope)
{

    var names = ["David", "Tony", "Tim", "David", "Daniel", "Tom"];

    var randomChoose = function(array){
        return Math.floor(Math.random() * array.length-1);

    };
    $scope.message = function(array){
        var name = array.indexOf(randomChoose(array));
        return "Hello"+name;
    };
});
我的html:

<div class="container">
    <div ng-controller="EventController">
        {{message(names)}}
        {{}}
    </div>

</div>

{{消息(名称)}
{{}}

多谢各位。我试图将
名称
更改为
$scope.names
,但这似乎不起作用。

您的随机逻辑似乎是错误的,一个有效的:


我想你肯定需要在这个范围内有名字才能工作标记中空的花括号(
{{}}
)有什么意义?这似乎就是问题所在。在这里进行调整后效果良好。。。包括$scope.names…和正确的数组查找。如果您使用控制台检查控制器(基本调试)中的值,您可能会发现更多问题。如果您不了解角度摘要是如何工作的,则将随机生成器函数传递给视图不是一个好主意。可能会导致太多的摘要,因为每个摘要都会更改值,每个范围更改都会导致另一个摘要循环…可能是无限循环。为生成器中的作用域变量赋值,并仅将变量传递给该随机生成器中的viewput
console.log()
,在加载页面时会多次调用它。最佳做法是避免标记中的函数用于显示目的
function EventController($scope) {
    $scope.names = ["David", "Tony", "Tim", "David", "Daniel", "Tom"];

    var randomChoose = function(array){
        return array[Math.floor(Math.random() * array.length)];
    };

    $scope.message = function(array){
        var name = randomChoose(array);
        return "Hello " + name;
    };

}