这是来自knockout.dirtyFlag.js
;(function (ko) {
ko.DirtyFlag = function (objectToTrack, isInitiallyDirty, hashFunction) {
hashFunction = hashFunction || ko.toJSON;
var
_objectToTrack = objectToTrack,
_lastCleanState = ko.observable(hashFunction(_objectToTrack)),
_isInitiallyDirty = ko.observable(isInitiallyDirty),
result = function () {
var self = this;
self.isDirty = ko.computed(function () {
return _isInitiallyDirty() || hashFunction(_objectToTrack) !== _lastCleanState();
});
self.reset = function () {
_lastCleanState(hashFunction(_objectToTrack));
_isInitiallyDirty(false);
};
return self;
};
return result;
};
})(ko);
在我的模型中,我有一个这样的定义设置:
define([
"lib/knockout",
"lib/knockout.dirtyFlag"
],
function(ko) {
...
self.dirtyFlag = new ko.DirtyFlag([
}
基本上我得到一个错误,说DirtyFlag未定义。
我需要做什么?
答案 0 :(得分:2)
好吧,看起来我的工作正常,所以我会发布我的发现:
在我的requirejs配置中,我添加了这个:
shim: {
"lib/knockout/knockout.dirtyFlag": {
deps: [
"lib/knockout/knockout"
],
init: function (ko) {
var self = this;
ko.DirtyFlag = self.ko.DirtyFlag;
return ko;
}
}
我对javascript或requirejs不是很熟悉,但init似乎把dep放在“ko”中,然后我就能在ko上创建一个DirtyFlag。 self.ko.DirtyFlag是实际的knockout.dirtyFlag javascript。
答案 1 :(得分:0)
你需要lib / knockout和lib / knockout.dirtyFlag。你需要两个吗?
如果您需要两者,请尝试:
define([
"lib/knockout",
"lib/knockout.dirtyFlag"
],
function(ko, kodf) {
...
self.dirtyFlag = new kodf.DirtyFlag([
}
您也可以尝试:
define([
"lib/knockout",
"lib/knockout.dirtyFlag"
],
function(k) {
...
self.dirtyFlag = new ko.DirtyFlag([
}
我认为你在要求和knockout.dirtyFlag中定义了ko。
答案 2 :(得分:0)
我结束了使用define方法包装kolite类。下面带有命令的示例,但对其他人来说也是一样的。
requirejs.config({
paths: {
knockout: 'Scripts/libs/knockout/knockout-2.2.1.debug',
command: 'Scripts/libs/knockout/knockout.command'
},
shim: {
knockout: {
exports: 'ko'
},
command: {
deps: ['knockout'],
exports: 'ko'
}
});
包裹命令
define(['knockout'], function(ko) {
... // command original code
return ko;
)
在我的模块中
define(['command'], function (ko) {
var doYourStaff = 0;
return doYourStaff;
});
答案 3 :(得分:0)
我们现在已经为所有三个库添加了对RequireJS的支持,您可以使用master中的最新版本。