this.inviteeEmailList = ko.observableArray([]);
this.status = ko.observable();
var emails = ["hello","test","obseervableArray"];
for(var j in emails)
{
var emailList = {};
emailList.email = emails[j];
emailList.status = ko.observable(this.status());
this.inviteeEmailList.push(emailList);
}
/**
* after getting response , changing the value of observable to true.
*/
var done = function()
{
var self = this;
self.status(true);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
<div id="foundEmail" class="suEmailIdContainer" data-bind="foreach : inviteeEmailList">
<span data-bind="text:$data.email"></span>
<div data-bind="text:$data.status"></div>
<span data-bind="if: $data.status">
<span>success</span><br/>
</span>
<span data-bind="if: !$data.status">
<span>fail</span><br/>
</span>
</div>
I have an observableArray with an observable property. As given here:
for(var j in emails)
{
var emailList = {};
emailList.email = emails[j];
emailList.status = ko.observable(this.status());
this.inviteeEmailList.push(emailList);
}
I am sending request to server and after getting response, I am changing the value of the observable (i.e. this.status()) to true or false accordingly.
In html I am trying to access $data.status inside foreach of inviteeEmailList.
But that value is not reflected in the observable property emailList.status.
Anything I am doing wrong?
foreachunder your ajax success and do the same .