2015-08-13 38 views
0

我跟着this post錯誤:Firebase.set失敗:第一個參數包含在財產「achv_img」

採用了棱角分明和火力achievementsapp.firebaseapp.com,你可以註冊,然後如果你點擊綠色的,再加上它應該彈出的具有外形未定義形式,上傳按鈕不能正常使用時,點擊Add按鈕,它給了我這個錯誤錯誤:Firebase.set失敗:第一個參數包含在財產「achv_img」

控制器代碼未定義:

myApp.controller('MeetingsController', 
    function($scope, $rootScope, $firebase, Uploader, 
    CountMeetings, FIREBASE_URL) { 

    var ref = new Firebase(FIREBASE_URL + '/users/' + 
    $rootScope.currentUser.$id + '/meetings'); 

    var meetingsInfo = $firebase(ref); 
    var meetingsObj = meetingsInfo.$asObject(); 

    meetingsObj.$loaded().then(function(data) { 
    $scope.meetings = data; 
    }); //make sure meetings data is loaded 

    $scope.addMeeting = function() { 
    meetingsInfo.$push({ 
     name: $scope.meetingname, 
     description: $scope.meetingdescription, 
     achv_type: $scope.achvtype, 
     achv_date: $scope.achvdate, 
     achv_img : $scope.achvimg, 
     date: Firebase.ServerValue.TIMESTAMP 
    }).then(function() { 
     $scope.meetingname=''; 
     $scope.achvtype = ''; 
     $scope.meetingdescription=''; 
     $scope.achvdate=''; 
     $scope.achvimg= $scope.meetingsInfoImgData; 
    }); 
    Uploader.create($scope.meetingsInfo); 


    $scope.handleFileSelectAdd = function(evt) { 
    var f = evt.target.files[0]; 
    var reader = new FileReader(); 
    reader.onload = (function(theFile) { 
     return function(e) { 
     var filePayload = e.target.result; 
     $scope.meetingsInfoImgData = e.target.result; 
     document.getElementById('pano').src = $scope.meetingsInfoImgData; 
     }; 
    })(f); 
    reader.readAsDataURL(f); 
    }; 
    document.getElementById('file-upload').addEventListener('change', $scope.handleFileSelectAdd, false); 


    }; //addmeeting 

    $scope.deleteMeeting = function(key) { 
    meetingsInfo.$remove(key); 
    }; //deleteMeeting 

}); //MeetingsController 
+1

下面有些幫助。請注意,StackOverflow是一個臭名昭着的低效調試服務。如果你仍然陷入困境,可以考慮在jsfiddle/jsbin中創建一個最小的複製(就像我爲了鏈接到的問題而創建的那個),然後發佈該URL。 –

回答

2

reader.onload()你從文件中取的圖像數據,並把它變成$scope.meetingsInfoImgData

reader.onload = (function(theFile) { 
    return function(e) { 
    var filePayload = e.target.result; 
    $scope.meetingsInfoImgData = e.target.result; 
    document.getElementById('pano').src = $scope.meetingsInfoImgData; 
    }; 
})(f); 

我原來的答案,然後利用其相當於本$scope.meetingsInfoImgData後的填充JavaScript對象,並將其發送到火力地堡:

$scope.episode.img1 = $scope.episodeImgData; 
var episodes = $firebase(ref).$asArray(); 
episodes.$add($scope.episode); 

當您嘗試在Firebase中創建對象時,您的代碼與$scope.meetingsInfoImgData無關。您的代碼中可能還需要類似$scope.episode.img1 = $scope.episodeImgData;的東西。

+0

謝謝弗蘭克,我現在犯了一個錯誤,它是更好的https://jsfiddle.net/9cazhb44/頁面沒有完全加載,我沒有部署它在這裏https://achievementsapp.firebaseapp.com只是註冊。 如果您打開meetings.js我希望$ scope.addMeeting函數中的.img1 $ scope,這將如何工作? – molham

+0

那個小提琴仍然是一個完整的應用程序,只是不起作用。如果你將問題隔離到一個最小但完整的複製品,我可能會提供幫助。請閱讀http://stackoverflow.com/help/mcve並申請。 –

+0

即時通訊使用角度和firebase,我不能說一種方法把這個代碼放在小提琴,這裏的縮小版本https://jsfiddle.net/9cazhb44/5/ – molham

1

如果由於某種原因,你不能從源頭上解決這個問題,以確保您的對象不包含任何不確定的道具使用這個簡單的一招: JSON.parse(JSON.stringify(ObjectToSave))

欲瞭解更多信息看一看這個codePen:http://codepen.io/ajmueller/pen/gLaBLX

相關問題