目前我有一个使用C# MVC5 and jQuery
的应用。我希望慢慢移动它的一部分来使用AngularJs
。
我有一些jQuery通过.load方法加载一个Html元素。我想做的是在这个加载的HTML中放置一个angularjs应用程序。这个html可能位于页面的几个位置,因为我们有许多动态加载到它上面的标签。
这可能吗?
我添加了一个数据-ng-app& data-ng-controller to 2 divs
< div data-ng-app =" testApp" > < div data-ng-controller =" testCtrl as test" > {{test.title}} < / div> < / div>
但是,testCtrl
为not getting used
且约会控制器保留在div
中,而{{}}
未被文本替换。知道我做错了吗?
刚刚创建了一个展示正在发生的事情的示例应用
答案 0 :(得分:1)
我认为问题在于,当您通过jQuery加载HTML时,angular.js
会在看到任何ng-app
,ng-controller
attrs之前被加载。
您可能尝试的是在加载HTML后手动引导AngularJS。
将此添加到jQuery HTML loading的回调中:
angular.element(document).ready(function() {
angular.bootstrap(document, ['testApp']);
});
请参阅:
答案 1 :(得分:0)
您只需要在MVC5应用程序中包含角度脚本,并使用适当的指令来引导角度应用程序。然后,在您通过.load加载的html中,您希望通过角度控制,通过角度应用程序或ng-controller中的指令开始添加您的功能。
修改强>
由于您只能为每个文档引导一个角度应用程序,因此我建议您将ng-app指令放在MVC应用程序的html或body标签上。根据其他一些答案,这将允许您的角度应用程序立即自动引导。你可以做的另一种方法是用你喜欢的div包装MVC应用程序的部分:
<!-- Section Loaded with your MVC app -->
<div ng-app="testApp">
<!-- INSERT HTML WHEN LOADED FROM JQUERY HERE -->
</div>
这将允许角度立即引导你的应用程序。
答案 2 :(得分:0)
是的,您可以使用不同的角度控制器和模板在页面上显示内容。你甚至不需要JQuery加载,你可以使用angular。
答案 3 :(得分:0)
我认为你没有发起Angular应用程序。
试试这个。
var Project = angular.module('testApp',[]);
Project.controller('testCtrl',["$scope",function($scope){
$scope.title == "your title";
}]);
并像这样更改你的HTML
< div data-ng-app="testApp" >
< div data-ng-controller="testCtrl" > {{title}} < /div >
< /div >