Nik*_*sen 3 javascript knockout.js
我有一个奇怪的问题,我有一个对象 - 让我们称之为Person - 它具有可观察的属性FirstName和Lastname,以及一个名为FullName的第三个计算属性.在我的ViewModel中,我有一个可观察的这些Person对象的数组.我还有一个将空Person推送到数组的函数.
这是奇怪的部分.
当我添加一个人,更改FirstName和LastName时,计算的FullName将成为名字和姓氏的串联 - 这是预期的行为.如果我然后添加另一个person对象,更改该对象FirstName或LastName属性然后返回以更改第一个人FirstName,两个Person对象的计算FullName现在是仅最后一个Person的first和lastname属性的串联.
这是代码:
function Person(data)
{
self = this;
self.FirstName = ko.observable(data !== undefined ? data.FirstName : "");
self.LastName = ko.observable(data !== undefined ? data.LastName : "");
self.FullName = ko.computed(function ()
{
return self.FirstName() + " " + self.LastName();
});
};
function ViewModel() {
var self = this;
self.People = ko.observableArray([]);
self.AddPerson = function()
{
self.People.push(new Person());
}
}
ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)
...并且可以使用以下步骤在此Fiddle中重新创建问题:
如何让这个看似简单的场景正常工作?
任何帮助表示赞赏.先感谢您.
Self被注册为全局变量,因为它没有包含它.改变自我=这个; to var self = this;
这是在我的手机上很难修复代码,但它的工作原理
var self = this;
Run Code Online (Sandbox Code Playgroud)
如果您没有声明var,则将其视为全局范围的一部分并进行共享.
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |