Я работал над проектом, который использует нокаут для привязки данных от javascript к html. Я также читаю данные из PL C, используя ajax, данные из запроса ajax будут помещены в модель просмотра нокаута и показаны на веб-странице. У меня проблемы с обновлением привязки данных. Я искал в inte rnet помощь, но пока не нашел ничего, что помогло бы мне, поэтому я надеюсь, что вы можете мне помочь.
Я настроил модель просмотра, как показано ниже, внутри файла javascript:
function AppViewModel() {
var self = this;
self.hmitags = ko.observableArray(groupDataValues);
self.Capa100 = ko.observable("Cap100");
self.Testvar = ko.observable(50);
}
var viewModel = new AppViewModel();
ko.applyBindings(viewModel);
И есть привязка данных в файле html: <span data-bind="text: Testvar></span>
, когда я теперь загружаю файл html, я вижу значение 50, как определено в модели просмотра, так что работает. Но теперь я хочу прочитать переменную из моего PL C, используя ajax, что выполняется с помощью функции внутри того же файла javascript. Вот как выглядит функция:
function ReadVariable()// function for reading out individual variables
{
// list can contain only one variable
var HMIReadList = "&paths=MainInstance.Testvar"
data.length = 0; // get rid of the data from the last query
// issue the data request
$.ajaxSetup({
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + BearerToken);
}
});
$.ajax({
type: "GET",
url: baseurl + "_pxc_api/api/variables?pathPrefix=Arp.Plc.Eclr/" + HMIReadList,
})
.done(function (data, status, jqXHR) {
viewModel.Testvar = data.variables[0].value;
console.log(viewModel.Testvar);
})
.fail(function (jqXHR, status, errorThrown) {
console.log("CreateSession Error: " + errorThrown);
console.log("Status: " + status);
console.dir(jqXHR);
alert("CreateSession $.ajax failed. Status: " + status);
});;
}
Я использую кнопку на странице html для вызова этой функции. В консоли я вижу, что он считывает значение из PL C и что оно отличается от начального значения 50. Но на странице html оно не меняется. Я не уверен, почему это не работает. Я искал некоторые решения, но не нашел ничего, что работает.