给定我有一个 function GenerateRandomId()
,它在每个呼叫上返回一些随机字符的新字符串,对@id属性有效。
如何完成以下操作?(注意:此代码不起作用(
<li ng-repeat="item in $ctrl.items">
{{ randomId = $ctrl.GenerateRandomId() }}
<input id="{{ randomId }}" type="checkbox" />
<label for="{{ randomId }}">...</label>
</li>
//in the controller
var self = this;
self.GenerateRandomId = function () {
return Math.random().toString(36).substr(2, 10);
};
编辑
- 在
randomId
的前面删除了" var"。 - 提供了控制器内部的
GenerateRandomId()
功能。
从HTML代码中删除" var"。尝试以下代码
<li ng-repeat="item in $ctrl.items">
{{ randomId = GenerateRandomId() }}
<input id="{{ randomId }}" type="checkbox" />
<label for="{{ randomId }}">...</label>
</li>
这样的事情应该做到。您可以声明该功能并将其添加到data-id
和for
。
var random = angular.module("random", []);
var ctrl = random.controller("Ctrl", Ctrl);
function Ctrl() {
var self = this;
self.number = "";
self.items = [1, 2, 3];
self.randomIntegersGenerator = function(){
var randomNumbers = [];
for(var i = 0; i < self.items.length; i++ ){
randomNumbers[i] = randomId();
}
return randomNumbers;
}
self.randomIntegers = self.randomIntegersGenerator();
}
function randomId() {
return Math.random().toString(36).substr(2, 10);
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="random">
<div ng-controller="Ctrl as ctrl">
<li ng-repeat="random in ctrl.randomIntegers">
<input data-id= {{random}} type="checkbox" />
<label for= {{random}} >Something</label>
{{random}}
</li>
</div>
</div>
尝试此
<li ng-repeat="item in $ctrl.items" ng-init="randomId = $ctrl.GenerateRandomId()">
<input id="{{ randomId }}" type="checkbox" />
<label for="{{ randomId }}">...</label>
</li>