对于初始化为“”的变量,ko.toJS()得到'undefined'

时间:2016-01-21 21:10:22

标签: javascript asp.net-mvc-4 knockout.js knockout-mvc

我在ASP.NET MVC 4中有一个项目,它使用knockoutjs来处理客户端的东西,比如跟踪某个字段是否已经改变。

在我的ViewModel的类声明中,我有2个observable,都初始化为""

private _observables = {
        query: ko.observable(""),
        object: ko.observable("")
    }

在对话框的close函数中,我使用isDirty()方法检查两个observable,以确定它们是否已更改,并在检测到更改时提示用户保存。

我已经介入并发现object似乎没有被正确跟踪,尽管如上所述。在isDirty()中,knockout拉出当前状态:

 target.isDirty = function () {
                var currentState = ko.toJS(target);
          ....logic
                returns dirty/notdirty

ko.toJS()来电之后,object的{​​{1}}字段始终为currentState,这会导致状态检查失败,因为初始状态已正确记录为undefined

即使我在调用""之前使用self._observables.object("")明确设置object,但在'脏 - 内的isDirty()调用之后,它仍然是undefined检查”。

我认为问题可能是视图中的绑定 - 它绑定到一个无法获得用户输入的隐藏字段,但是只要ko.toJS()被初始化,我就看不到那个初始值正在丢失/被覆盖。

0 个答案:

没有答案