2015-04-15 5 views
0

Я использую нокаут MVC, с View Model на одном файле js, на кнопку click Я загружаю частичный вид, который уже имеет data-bind="text: type". но модель представления не может связывать элементы, поскольку она находится в частичном представлении, и ее загрузка нажатием кнопки ... есть ли способ, с помощью которого мы можем использовать данные привязки после рендеринга пейджера.MVC нокаут частичный вид

Контрольный код ниже, чтобы загрузить частичный вид и получить данные для частичного просмотра: -

$('#btnCreateTask').click(function() { 
    var url = getAppPath() + 'Home/CreateTask'; 
    $('#midsection').load(url); 
    var url = getAppPath() + 'Task/GetTaskFormDetails'; 
    $.ajax({ 
     url: url, 
     cache: false, 
     type: 'POST', 
     contentType: 'application/json; charset=utf-8', 
     data: {}, 
     success: function (data) { 
      viewModel.task.TaskType.push.apply(viewModel.task.TaskType, data["objType"]); 
+0

http://stackoverflow.com/questions/11066732/knockout-data-bind-on-dynamically-generated-elements – tcigrand

+0

Вы также можете использовать шаблон вместо частичного представления: http://knockoutjs.com/documentation /template-binding.html –

+0

1. вы можете попытаться скрыть «div» нагрузка и сделать его видимым при щелчке (мой предпочтительный способ). 2.если вы динамически добавили html в div, вам нужно «повторно применить привязки» к родительскому div. ура –

ответ

0

При использовании MVC для загрузки партиалов через jQuery.load() в приложение динамически, вы должны понимать, что элементы, которые вы вносятся, не регистрируются нокаутом. Когда вы инициализируете страницу, вы вызываете нокаут с помощью ko.applybindings(). Однажды. Любая дальнейшая манипуляция DOM должна быть побочным продуктом привязки нокаута.

Один из наших проектов - это огромное приложение для предприятий, и мы загружаем все возможные частичные части в наш вид (ы) на загрузку и контролируем их видимость, форматируя их как шаблон нокаута или просто привязывая видимость нокаута.

С помощью любой опции вы загружаете элементы DOM при начальной загрузке. Дополнительные накладные расходы минимальны и будут препятствовать обратному вызову на сервер.

Смежные вопросы