2015-12-05 2 views
0

Я хочу загрузить html-файл с помощью ajax и выполнить скрипт. это мой HTML-файл для загрузки:чистый js load html и js с помощью ajax, но js не работает

<div class="panel panel-body"> 
    <h4>Personal Data</h4> 
    <hr /> 
    <span data-bind="editable: firstName"></span> 
    <span data-bind="text: firstName"></span> 
</div> 

<script> 
    (function() { 
     console.log('lala'); 

     var viewModel = function() { 
      var self = this; 
      self.id = ko.observable(); 
      self.firstName = ko.observable('YZ'); 
      self.lastName = ko.observable(); 
      self.gender = ko.observable(); 

      self.genders = ko.observableArray(); 
     } 
     var vm = new viewModel(); 
     ko.applyBindings(vm); 
    }) 
</script> 

и это, как я загрузить и выполнить:

Mark.load(t.pathToTemplate, t, function (htmlTemplate, path, option) { 
        var wrap = document.createElement('div'); 
        wrap.innerHTML = htmlTemplate; 
        var scripts = wrap.getElementsByTagName('script'); 
        if (scripts.length > 0) { 
         var newjs = document.createElement('script'); 
         newjs.onreadystatechange = function() { 
          if (newjs.readyState === 'loaded' || newjs.readyState === 'complete') { 
           cb(); 
          } 
         }; 
         newjs.onload = function() { 
          cb(); 
         }; 
         newjs.innerHTML = scripts[0].innerHTML; 
         document.body.appendChild(newjs); 
        } 
        document.getElementById(option.renderIn).innerHTML = htmlTemplate; 

       }); 
Mark.load = function (path, option, callback) { 
      var xobj = new XMLHttpRequest(); 
      xobj.overrideMimeType("application/json"); 
      xobj.open('GET', path, true); 
      xobj.onreadystatechange = function() { 
       if (xobj.readyState == 4 && xobj.status == "200") { 
        callback(xobj.responseText, path, option); 
       } 
      }; 
      xobj.send(null); 
     } 

нагрузки и правильно добавить работу, но JS не выполняется. Как добавить или добавить этот скрипт js для документирования и выполнения его с помощью чистых js?

ответ

1

Вы объявляете анонимную функцию, но вы ее не выполняете. Вам нужно добавить () в конце функции, чтобы выполнить его:

<script> 
    (function() { 
     console.log('lala'); 

     var viewModel = function() { 
      var self = this; 
      self.id = ko.observable(); 
      self.firstName = ko.observable(); 
      self.lastName = ko.observable(); 
      self.gender = ko.observable(); 

      self.genders = ko.observableArray(); 
     } 
     var vm = new viewModel(); 
     ko.applyBindings(vm); 
    })(); 
</script> 
+0

благодаря это работает для console.log(), но knockoutjs применять привязки не работает, я имею в виду это выглядит как ko.applyBindings (VM); не выполняются или не применяются. fyi я обновляю свой код – yozawiratama

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