我还是Knockout的新手,所以我希望有人能够帮助我。
这是我的观点模型:
baseModel = {
logged_in : ko.observable(),
alerts : ko.observableArray(),
errors: ko.observable()
};
在我的HTML中,我有:
<span data-bind="text: ($root.errors['myerror1'] === undefined)? 'undefined':$root.errors['myerror1']"></span>
我希望通过AJAX拉入任意对象并将其分配给我的.errors属性。例如,当我的回答如此:
Object {myerror1: "password is wrong", error2: "something else is wrong"}
当我在AJAX成功回调中执行以下操作时,我希望它在我的span
中显示错误:
if( response.errors !== undefined )
baseModel.errors = ko.mapping.fromJS(response.errors, {}, baseModel.errors);
OR,
if( response.errors !== undefined )
baseModel.errors = response.errors;
两者都没有显示我绑定在HTML中的myerror1
。我可能在这里做了很多错事。我不确定是什么问题。谢谢!
答案 0 :(得分:1)
如果您尝试使用新值更新errors
observable,则不应使用=
进行设置,而是将其作为参数传递给新值:
baseModel.errors({myerror1: "password is wrong", error2: "something else is wrong"});
更新:我发现您的代码还有两个问题:
errors
以undefined
开头;最好将其设置为空对象,因此在首次评估绑定时不会出现错误:
errors: ko.observable({})
如果您想在errors
中的表达式中使用data-bind
中的值,则应“调用”它以获取其值 - 而不是直接使用它:
<span data-bind="text: ($root.errors()['myerror1'] === undefined)?
'undefined':$root.errors()['myerror1']"></span>