Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何包含特定于每个视图的javascript文件_Javascript_Angularjs - Fatal编程技术网

如何包含特定于每个视图的javascript文件

如何包含特定于每个视图的javascript文件,javascript,angularjs,Javascript,Angularjs,我遇到的问题是loadjs文件在绑定到网格之前并不总是被加载。我读过其他关于使用指令的帖子,但我不知道如何在我的案例中使用它们 代码应该加载一个特定的视图,每个视图依次有一个特定的javascript文件,在视图最终被刷新之前需要加载该文件 因此,视图1可能是具有datagrid.js文件依赖性的datagrid,而视图2是具有listview.js依赖性的listview 谢谢 Function MyCtrl1($scope) { $scope.$on('$viewContentLoaded'

我遇到的问题是loadjs文件在绑定到网格之前并不总是被加载。我读过其他关于使用指令的帖子,但我不知道如何在我的案例中使用它们

代码应该加载一个特定的视图,每个视图依次有一个特定的javascript文件,在视图最终被刷新之前需要加载该文件

因此,视图1可能是具有datagrid.js文件依赖性的datagrid,而视图2是具有listview.js依赖性的listview

谢谢

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">