我有一个引号数组,其中包含6个引号。
接下来我有一个getRandomNum
函数,它返回一个0到6之间的数字。
要在我的chooseQuote
功能中使用:
<body ng-app="myApp" ng-controller="DashCtrl as dash">
<div class="quotes" title="Quotes">
<p>{{dash.chooseQuote(dash.num)}}</p>
</div>
</body>
我的Dash控制器中的代码:
var vm = this;
var num = 0;
var quotes = [
{
quote: "Money won't create success, the freedom to make it will.",
author: "Nelson Mandela"
},
// etc ...
];
function getRandomNum(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
num = getRandomNum(0, 5);
vm.chooseQuote = function(i) {
console.log(i);
return quotes[i]["quote"];
}
console.log(num);
console.log(vm.chooseQuote(num));
现在检查控制台我得到的数字是未定义的,也无法获得引用&#39;未定义的。这是在chooseQuote
函数内部第二次被调用时发生的。
首先是console.log:
工作正常,下一个console.log打印正确的引用也是如此,但是在最后一个console.log上,第二次进入我的chooseQuote
函数我得到的i / num是未定义的:
你知道我在哪里出错吗?
答案 0 :(得分:1)
num
被定义为您提供的代码中的私有控制器变量。看起来好像vm
用于引用控制器的$范围,因此您需要将num
设为vm
的属性,以便{&1}} #39;暴露在视野中。
vm.num = 0;
...
vm.num = getRandomNum(0, 5);
...
console.log(vm.num);
console.log(vm.chooseQuote(vm.num));