在我的addChore函數中,我顯示要添加到的數組的長度。然後在代碼中,我試圖獲取choreList.chore數組,但我注意到它並沒有包含我剛剛添加的所有元素。angular.injector數組值不返回當前值
有什麼我失蹤讓操作正確嗎?
這是我用我的整個服務:
myapp.service('myService', function() {
var choreList = this;
choreList.chore = [{ name: 'Take out Trash', frequency: 'Sundays', allowance: '$0.25', id: 0 },
{ name: 'Unload Dishwasher', frequency: 'Fridays', allowance: 'Free', id: 1 }];
var familyList = this;
familyList.people = [
{ name: 'Johnny', dob: '01/01/2005', cell: '3035551212', carrier: 'ATT', email: '[email protected]', active: true, personId: 0 },
{ name: 'Susie', dob: '03/01/2005', cell: '3035551313', carrier: 'SPRINT', email: '[email protected]', active: true, personId: 1 }];
choreList.addChore = function() {
choreList.chore.push({
name: choreList.inputChore, frequency: $('#inputFrequency').val(),
allowance: $('#inputAllowance').val(), id: choreList.chore.length
});
choreList.inputChore = '';
$('#inputFrequency').val('Mondays');
$('#inputAllowance').val('Free');
alert(choreList.chore.length);
};
this.returnChoreList = function() {
return choreList.chore;
}
this.returnFamilyList = function() {
return familyList.people;
}
familyList.addPerson = function() {
//alert(familyList.inputName + ', ' + familyList.inputBirthday + ', ' + familyList.inputCellPhone, + ', ' + familyList.inputCarrier + ', ' + familyList.inputEmail);
familyList.people.push({
name: familyList.inputName, dob: familyList.inputBirthday,
cell: familyList.inputCellPhone, carrier: familyList.inputCarrier,
email: familyList.inputEmail, active: true, personId: familyList.people.length + 1
});
familyList.inputName = '';
familyList.inputDOB = '';
familyList.inputCellPhone = '';
familyList.inputCarrier = 0;
familyList.inputEmail = '';
familyList.active = true;
};
});
當我拿到長度後,我加入到choreList.chore我得到的初始2項+新一個我加入(在這個例子中是3)。
但是當我調用returnChoreList函數時,我只能得到2(最初的2條記錄)。
有沒有不同的方法來做到這一點?
這是我如何打電話來獲得jQuery的數組:
$(document).on('switchChange.bootstrapSwitch', 'input[id^="chk"]', function (event, state) {
var clistArr;
clistArr = angular.injector(['ng', 'familyApp']).get("myService").returnChoreList();
alert(clistArr.length);
});
更新: 基於關,我從@camden_kid我認爲這是在angular.injector
語句修改一個plunkr的:
http://plnkr.co/edit/fxOaJdsVk9Tb7rrEwPrB?p=preview
正如我收到類似的行爲在plunkr,因爲我有我的代碼。
更新#2:
感謝Camden_kid你爲我這麼遠......
我覺得到多個服務電話,因爲我與jQuery和角混合的我已經收窄。
我有這段代碼,當我與添加雜項和人物時生成的動態開關交互時,我可以捕獲該代碼。
$(document).on('switchChange.bootstrapSwitch', 'input[id^="chk"]', function (event, state) {
正是在這種情況我還呼籲這個位置之間:基於
var clistArr;
clistArr = angular.injector(['ng', 'familyApp']).get("myService").returnChoreList();
過什麼Camden_kid說,我不能有「爲myService」多個實例。這條線每次都有效地重新生成每個人/雜項組合。
反正有一個「myService」的引用,但能夠調用returnChoreList函數嗎?
@camden_kid以及我只在添加新項目時測試了它。它從3變爲2. – webdad3 2015-04-05 20:40:12
@camden_kid - 我不知道。我從一個例子中得到了這段代碼。它返回數組。但只是最初加載的值。沒有任何新的。 – webdad3 2015-04-05 21:23:48