使可观察变量为空
Making a observable variable as null
我有一个以下格式的可观察变量:
var obvar = ko.observable("");
obvar({view:'dummy.html',model:'dummymodel'});
在我的一张支票中,我想清空内容,如果变量 "obvar" 包含
{view:'dummy.html',model:'dummymodel'}.
我尝试了 obvar("");
但它没有发生。
obvar ="";
会将其转换为普通字符串。
如何清空内容?
您的第一个代码片段:
var obvar = ko.observable("");
obvar({view:'dummy.html',model:'dummymodel'});
有一个特殊但重要的功能。 obvar
observable 首先包含一个 string
,在第二行之后它包含一个 Object
.
您提到的要求是(强调我的):
...I want to empty the contents, if variable obvar
contains {view:'dummy.html',model:'dummymodel'}
我不清楚你说的 "empty" 内容是什么意思,也许你也不清楚(因为你已经尝试 obvar("");
,从某种意义上说 "empties" 内容, 但没有达到预期的效果)。
无论如何,这里有两种方法,在 runnable 片段中,这样您就可以看到它正在工作的证据:
function ViewModel() {
var self = this;
var obvar = ko.observable("");
obvar({view:'dummy.html',model:'dummymodel'});
self.obvar = obvar; // Expose it so the view can demo the workings.
function canEmptyContents() {
// empty the contents if variable "obvar" contains {view:'dummy.html',model:'dummymodel'}
return obvar().view === 'dummy.html' && obvar().model === 'dummymodel';
}
self.option1 = function() {
if (canEmptyContents()) {
obvar("");
}
};
self.option2 = function() {
if (canEmptyContents()) {
obvar({ dummy: "", model: "" });
}
};
}
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<button data-bind="click: option1">Option 1: empty with string</button>
<button data-bind="click: option2">Option 2: empty with empty object</button>
<hr>
Debug info: <pre data-bind="text: ko.toJSON($root, null, 2)"></pre>
我有一个以下格式的可观察变量:
var obvar = ko.observable("");
obvar({view:'dummy.html',model:'dummymodel'});
在我的一张支票中,我想清空内容,如果变量 "obvar" 包含
{view:'dummy.html',model:'dummymodel'}.
我尝试了 obvar("");
但它没有发生。
obvar ="";
会将其转换为普通字符串。
如何清空内容?
您的第一个代码片段:
var obvar = ko.observable(""); obvar({view:'dummy.html',model:'dummymodel'});
有一个特殊但重要的功能。 obvar
observable 首先包含一个 string
,在第二行之后它包含一个 Object
.
您提到的要求是(强调我的):
...I want to empty the contents, if variable
obvar
contains{view:'dummy.html',model:'dummymodel'}
我不清楚你说的 "empty" 内容是什么意思,也许你也不清楚(因为你已经尝试 obvar("");
,从某种意义上说 "empties" 内容, 但没有达到预期的效果)。
无论如何,这里有两种方法,在 runnable 片段中,这样您就可以看到它正在工作的证据:
function ViewModel() {
var self = this;
var obvar = ko.observable("");
obvar({view:'dummy.html',model:'dummymodel'});
self.obvar = obvar; // Expose it so the view can demo the workings.
function canEmptyContents() {
// empty the contents if variable "obvar" contains {view:'dummy.html',model:'dummymodel'}
return obvar().view === 'dummy.html' && obvar().model === 'dummymodel';
}
self.option1 = function() {
if (canEmptyContents()) {
obvar("");
}
};
self.option2 = function() {
if (canEmptyContents()) {
obvar({ dummy: "", model: "" });
}
};
}
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.3.0/knockout-min.js"></script>
<button data-bind="click: option1">Option 1: empty with string</button>
<button data-bind="click: option2">Option 2: empty with empty object</button>
<hr>
Debug info: <pre data-bind="text: ko.toJSON($root, null, 2)"></pre>