Angularfire docs によると、 を介して返されたオブジェクトを操作する場合、オブジェクトのプロパティを$asObject()
定義してから を使用することで、そのオブジェクトの優先度を設定できます。$priority
$save()
私のコードはうまく機能しますが、$priority
何もしていません。コメントに完全な説明を含むコードを次に示します。
app.factory('MyService', function($rootScope, $firebase) {
// The complete Firebase url
var ref = *obfuscated*;
// Returning the dataset as an object containing objects
var data = $firebase(ref).$asObject;
// This object is what's returned by MyService
var Data = {
// Method to create a new object within the data set,
// keyed by myId. Attempting to set priority for the
// record via $priority. returnData.uid is a valid string.
create: function(returnData, myId) {
data[myId] = {
myId: myId,
$priority: returnData.uid
};
// No need to explain the stuff between here and the
// $rootScope listener below, just added for context
data.$save().then(function() {
setMyId(myId);
});
},
findByMyId: function(myId) {
if (myId) {
return data[myId];
}
}
};
function setMyId(myId) {
$rootScope.myId = User.findByMyId(myId);
}
// This event listener works fine, fires
// at user login and returns data
$rootScope.$on('$firebaseSimpleLogin:login', function(e, returnData) {
// returnData.uid has the correct value - this
// function should return the object(aka record) with
// a priority matching returnData.uid
var query = $firebase(ref.startAt(returnData.uid).endAt(returnData.uid)).$asObject();
// console shows an object with the normal $firebase
// properties, but no records. If I define query without
// limiting the set ($firebase(ref).$asObject()), it returns
// the full set just fine. The priority on all records is still
// null.
console.log(query);
query.$loaded(function() {
setData(query.myId);
});
});
return Data;
});
はい、Thinkster.io のチュートリアルに従っていて、第 7 章にいます。いいえ、これはその章に関する他の質問と重複していません。例にある Angularfire 0.8 以前のコードを回避する方法を既に見つけました。 $priority を設定することはできません。これまでに、自分自身の努力と Web で解決策を見つけるのに約 5 時間を費やしました。
テイカーはいますか?