我正在制作一个 Angular Controller ,需要用两个空对象初始化一个数组,这样屏幕上就会出现两条线,我需要在单击 + 按钮时初始化数组中的一个新对象。我不确定该怎么做。
这是我最好的尝试:
var myApp = angular.module('myApp', []);
myApp.controller('myController', ['$scope', '$q', function($scope, $q) {
$scope.arr = [card('',''),card('','')];
$scope.addLine = function(index){
$scope.arr.push(card('',''));
}
$scope.removeLine = function(index){
$scope.arr.splice(index, 1);
}
}]);
function card(term, definition){
this.term = term;
this.definition = definition;
}
最佳答案
您需要使用关键字new
来创建card
的实例:
$scope.arr = [new card('',''), new card('','')];
// ^ ^ See new keyword
$scope.addLine = function(index){
$scope.arr.push(new card('',''));
// ^ See new keyword
}
另外你应该考虑总是大写你的构造函数(这样你可以表明它是一个构造函数:
new Card('', '');
function Card(...) {...}
您还可以通过检查 instanceof
来消除对 new
关键字的需求:
// No need for new anymore:
var card = Card(1, 2, 3);
console.log(card instanceof Card); // true
function Card(a, b, c) {
if (!(this instanceof Card)) return new Card(a, b, c);
this.a = a;
this.b = b;
// ...
}
关于javascript - 如何在 Javascript 中用两个空对象初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683965/