在我的ruby on rails应用程序中,我通过ajax调用生成视图。
我正在使用以下代码。
$("#a_div_id").html("<%= escape_javascript(render 'index')%>");
我尝试呈现的视图是_index.html.erb:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
First Name: <input type="text" ng-model="firstName"><br>
Last Name: <input type="text" ng-model="lastName"><br>
<br>
Full Name: {{firstName + " " + lastName}}
</div>
<script>
alert('first');
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
alert('second');
$scope.firstName = "John";
$scope.lastName = "Doe";
});
alert('third');
</script>
当我渲染视图时,我只收到第一条和第三条消息。但是,当我将这段代码添加到dashboard.html.erb而不是通过ajax代码渲染时,它完全有效。
在第一种情况下,我收到以下错误。
angular.min.js:6 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.4.8/$injector/modulerr?p0=myApp&p1=Error%3A%2…ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.4.8%2Fangular.min.js%3A20%3A274)
at angular.min.js:6
at angular.min.js:38
at n (angular.min.js:7)
at g (angular.min.js:37)
at eb (angular.min.js:41)
at c (angular.min.js:19)
at yc (angular.min.js:20)
at Zd (angular.min.js:19)
at HTMLDocument.<anonymous> (angular.min.js:294)
at fire (jquery.self-bd7ddd3….js?body=1:3233)
我是我的智慧&#39;最后,我决定不知道我错过了什么,
任何建议,
感谢。
答案 0 :(得分:0)
您可以在没有escape_javascript
的情况下尝试。
同样放一个这样的debugger
,这将在chrome执行js时设置一个断点。
debugger;
$("#a_div_id").html("<%= render 'index' %>");
这将有助于您了解jquery正在尝试添加为HTML。
如果这不起作用,
可能你应该在script
标签中取js并将其放在某个方法中,并在将索引添加到dom后调用该方法。
$("#a_div_id").html("<%= render 'index' %>");
myMethodToRenderAngular();