如何包含特定于每个视图的javascript文件
我遇到的问题是loadjs文件在绑定到网格之前并不总是被加载。我读过其他关于使用指令的帖子,但我不知道如何在我的案例中使用它们 代码应该加载一个特定的视图,每个视图依次有一个特定的javascript文件,在视图最终被刷新之前需要加载该文件 因此,视图1可能是具有datagrid.js文件依赖性的datagrid,而视图2是具有listview.js依赖性的listview 谢谢如何包含特定于每个视图的javascript文件,javascript,angularjs,Javascript,Angularjs,我遇到的问题是loadjs文件在绑定到网格之前并不总是被加载。我读过其他关于使用指令的帖子,但我不知道如何在我的案例中使用它们 代码应该加载一个特定的视图,每个视图依次有一个特定的javascript文件,在视图最终被刷新之前需要加载该文件 因此,视图1可能是具有datagrid.js文件依赖性的datagrid,而视图2是具有listview.js依赖性的listview 谢谢 Function MyCtrl1($scope) { $scope.$on('$viewContentLoaded'
Function MyCtrl1($scope) {
$scope.$on('$viewContentLoaded', function() {
//Load file if not already loaded
isloadjscssfile("js/model/gridmodel.js", "js")
$("#grid").kendoGrid({
dataSource: getdatasource(),
pageable: true,
height: 400,
toolbar: ["create"],
columns: [
"ProductName",
{ field: "UnitPrice", title: "Unit Price", format: "{0:c}", width: "150px" },
{ field: "UnitsInStock", title:"Units In Stock", width: "150px" },
{ field: "Discontinued", width: "100px" },
{ command: ["edit", "destroy"], title: " ", width: "210px" }],
editable: "inline"
});
});
}你不能。Angular不会从模板加载javascript部分 无论如何,您应该将它们包含在主应用程序中。主应用程序启动时,应加载所有控制器。(这是您放置
npApp
指令的地方)尝试类似的方法(可能“角度更大”,但目前它对我有效):
如果您想在指令中使用它,您可以这样做
.directive('require', function(){
return{
restrict: 'E',
scope: {
scriptSrc: '@'
},
template:'<script type="text/javascript" src="{{ scriptSrc }}"></script>',
link: function(scope, elm, attr){
....
}
replace: true
}
});
指令('require',函数(){
返回{
限制:'E',
范围:{
scriptSrc:“@”
},
模板:“”,
链接:功能(范围、elm、属性){
....
}
替换:正确
}
});
HTML:
<require script-src="/foo.js">
<require script-src="/bar.js">
因此,如果我有20个视图,而不是能够为每个视图动态加载js文件,那么我必须将src=mygrid.js硬编码到main.html页面??我一定是误解了,因为这会导致每个页面加载都包含该视图不需要的javascript。如果您有20个视图,它对应于20个控制器,它可能是一个大文件,具体取决于控制器,但如果您有共享方法签出(控制器继承部分)。或者您可以根据您的需要创建一个服务,因此在上面的示例中,我使用isloadjscssfile动态加载文件,该文件将文件添加到头中,但使用viewContentLoaded事件绑定到网格,但它不支持加载文件。在我的代码中,我应该把isloadjscssfile(“js/model/gridmodel.js”,“js”)方法放在哪里,把Bind grid$grid代码放在哪里。viewcontentload似乎会延迟事件以使其正常工作。我需要的是一个地方,上面写着如果view1然后在doc.ready加载文件之前,然后在doc.ready绑定到网格对你的问题没有帮助,但是你不应该在你的控制器中访问DOM,你应该写一个kendoGrid指令来处理这个问题,请参阅(正确使用控制器部分)它不起作用,脚本未按时加载,控制器无法访问。
<require script-src="/foo.js">
<require script-src="/bar.js">