我想爲實體(如用戶和羣組)實施baseEntity類,但isFavourite
屬性在baseEntity中時無法從persistanceId()
中讀取正確的Id()
。 (type
和Id()
出來爲未定義和令人驚訝的類型在confirmDelete
正確的值)淘汰賽baseEntity屬性可用性令人困惑
define(["knockout"], function (ko) {
var app = require('durandal/app');
ko.baseEntity = function (data) {
var self = this;
self.Id = ko.observable();
self.confirmDelete = function() {
var result;
app.showMessage(
'Are you sure you want to delete the ' + self.type + ' ' + self.Name() + '?',
'Deleting ' + self.type, ['Yes', 'No']).then(
function (dialogResult) {
dialogResult === "Yes" ? result = true : result = false;
});
return result;
};
self.persistanceId = function() {
return self.type + '-' + self.Id() + "-IsFavourite";
};
self.isFavourite = ko.observable(false).extend({
persist: self.persistanceId()
});
self.toggleFavourite = function() {
self.isFavourite(!self.isFavourite());
};
}
return {
model: ko.baseEntity
}
});
但如果isFavourite
而不是被在這裏baseEntity它是基團的實施例部分然後正常工作。
define(["knockout", "models/baseentity"], function (ko, baseEntity) {
var
model = function (data) {
var self = this;
baseEntity.model.call(self);
self.type = 'group';
self.Id(data.Id);
self.Name = ko.observable(data.Name);
self.Description = ko.observable(data.Description);
self.Members = ko.observableArray(data.Members);
self.isFavourite = ko.observable(false).extend({
persist: self.persistanceId()
});
}
return {
model: model
}
});
有人能向我解釋,這到底是怎麼回事,我怎麼能打動我的基礎屬性回到我的baseentity,因爲它是在各種其他的東西太共享。
呀瞭解,ko.baseEntity是愚蠢的,但還是要留一些基礎模型道具的道具淘汰賽,因爲他們主要用於視圖的數據綁定。感謝您的幫助 – XGreen
是的,絕對可行。如果您在Model上將屬性a設置爲ko.observable,然後創建SpecialModel構造函數並設置SpecialModel。prototype = new Model(),SpecialModel將具有可觀察屬性a,並且您可以在構造函數中調用類似this.a('abc')的東西。 –