Я думаю, что у меня отсутствует фундаментальная концепция где-то. Выход на код ниже 100%, но свойства объекта не наблюдаются.Knockout.js: ViewModel Свойства не наблюдаются
<script>
var model = { };
var mapping = {
create: function() {
var _profile;
$.ajax({
type: "GET",
url: 'Manage.aspx/GetContact',
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (results) {
_profile = results.d;
},
error: function (err) {
alert(err.status + " - " + err.statusText);
}
});
return _profile;
}
};
$(document).ready(function() {
var vm = ko.mapping.fromJS(model, mapping);
ko.applyBindings(vm);
});
</script>
<dl class="dl-horizontal">
<dt>
<label>E-Mail:</label></dt>
<dd><span data-bind="text: E_Mail" /></dd>
<dd><asp:TextBox runat="server" data-bind="value: E_Mail" /></dd>
</dl>
Мой код позади:
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static DynamicsNAV.NavContact.Contact GetContact()
{
DynamicsNAV.NavContact.Contact contact = ReadContact();
if(contact == null)
{
contact = new DynamicsNAV.NavContact.Contact();
contact.E_Mail = HttpContext.Current.User.Identity.Name;
}
return contact;
}
В этом примере, я стараюсь, чтобы увидеть, если пользовательский интерфейс обновляется при изменении адреса электронной почты в текстовом поле, которое он не делает. Если я добавлю адрес электронной почты: ko.observable(); свойство модели и использовать его в текстовом поле и метке, обновление работает, как ожидалось.
Если я:
var model = ko.observable();
значения не отображаются при загрузке страницы. И ошибок не возникает.
С наилучшими пожеланиями, Е.В.
Я попытался воспроизвести проблему, вы можете описать но не мог. Не могли бы вы проверить эту скрипку и посмотреть, представляет ли она то, что вы пытаетесь сделать? https://jsfiddle.net/wgcdeyyf/ – user3297291
Можете ли вы использовать фактический визуализированный HTML для своего серверного элемента управления и придумать репликацию jsfiddle проблемы (просто отключите ответ службы)? –