仅第一次观察到刷新

时间:2017-11-17 14:26:55

标签: javascript knockout.js

我的对象中有一个可观察的属性(命名属性)。不幸的是,只有在我第一次更改它时它才会刷新。

有什么不对?

代码:

var Session = function(vm, session) {
var self = this;
ko.mapping.fromJS(session, {}, self);

self.selectedSessionProperty = ko.observable('');

self.restarting = ko.observable(false);

if (! ko.isObservable(self.properties)) {
  self.properties = ko.observableArray();
}

self.availableNewProperties = ko.computed(function() {
  var addedIndex = {};
  $.each(self.properties(), function(index, property) {
    addedIndex[property.key] = true;
  });
  var result = $.grep(vm.availableSessionProperties(), function(property) {
    return ! addedIndex[property.name];
  });
  return result;
});
};

1 个答案:

答案 0 :(得分:1)

尝试self.properties.valueHasMutated();在循环之后,这应该触发敲除更新。

您还可以使用knockout实用程序功能来帮助您使用数组:http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html