Arn*_*ati 1 javascript knockout.js
假设我有一个 json 的 observables :
self.name = ko.observable('Arnab');
self.surname= ko.observale('Bhagabati')
var person = {
name:ko.observable('Arnab'),
lastName= ko.observale('Bhagabati')
}
Run Code Online (Sandbox Code Playgroud)
console.log(person.name());
我可以通过“如何检查我是否person有一个名为“的淘汰可观察财产”来访问人名salary?
if (typeof person.salary() !== 'undefined')
Run Code Online (Sandbox Code Playgroud)
给出params.salary is not a function
我如何检查我的人是否有一个名为工资的可观察财产?
(强调我的)
如果您按照 的方式使用检查if (ko.unwrap(person.salary)),就像其他答案所建议的那样,那么您基本上是在检查是否存在已定义的salary属性。
IE:
person = { salary: undefined };
person = { };
person = { salary: ko.observable() };
Run Code Online (Sandbox Code Playgroud)
都会true回归typeof ko.unwrap(person.salary) === "undefined"
如果我从字面上理解你写的内容,这并不能回答“person”对象是否有一个名为 的可观察属性salary。
要回答这个问题,您需要ko.isObservable:
person = { salary: undefined };
person = { };
person = { salary: ko.observable() };
Run Code Online (Sandbox Code Playgroud)
var persons = [
[{ }, "{ }"],
[{ salary: undefined }, "{ salary: undefined }" ],
[{ salary: ko.observable() }, "{ salary: ko.observable()" ]
]
var check1 = person => typeof ko.unwrap(person.salary) === "undefined";
var check2 = person => ko.isObservable(person.salary);
console.log(check1.toString());
persons.forEach(([p, c]) => console.log(c, "->", check1(p)));
console.log(check2.toString());
persons.forEach(([p, c]) => console.log(c, "->", check2(p)));Run Code Online (Sandbox Code Playgroud)
可能是我太字面地理解了你的问题,而你所需要的只是ko.unwrap,但我觉得我必须分享差异
| 归档时间: |
|
| 查看次数: |
5655 次 |
| 最近记录: |