6

我遇到的问题是 loadjs 文件在我将其绑定到网格之前并不总是被加载。我已阅读有关使用指令的其他帖子,但我不明白如何在我的情况下使用它们。

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

因此视图 1 可能是具有 datagrid.js 文件依赖关系的数据网格,而视图 2 可能是具有 listview.js 依赖关系的列表视图

谢谢。

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"
                });
});

}

4

3 回答 3

3

你不能。Angular 不会从模板加载 javascript 部分。

无论如何,您应该将它们包含在您的主应用程序中。所有控制器都应该在主应用程序启动时加载。(这是您放置npApp指令的地方)

于 2012-09-15T12:13:15.903 回答
3

尝试这样的事情(它可能是“更多的 Angular”,但目前它对我有用):

angular.module('MyApp').controller('MyCtrl1', ['$scope', function ($scope) {

    window.initialize = function() {
        // code to execute after your JS file referenced in the loadScript function loads
    }

    var loadScript = function () {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'http://www.myserver.com/file.js?callback=initialize';
        document.body.appendChild(script);
    }

    $scope.$on('$viewContentLoaded', function () {
        loadScript();
    });

}]);
于 2013-11-27T23:54:38.127 回答
3

如果你想在指令中这样做,你可以做这样的事情

.directive('require', function(){
    return{
      restrict: 'E',
      scope: {
         scriptSrc: '@'
      },
      template:'<script type="text/javascript" src="{{ scriptSrc }}"></script>',
      link: function(scope, elm, attr){
        ....
      }
      replace: true
    }
});

HTML:

<require script-src="/foo.js">
<require script-src="/bar.js">
于 2014-04-02T05:18:49.510 回答