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」になる可能性がありますが、今のところ私にとってはうまくいきます):

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

できません。Angular はテンプレートから JavaScript パーツをロードしません。

とにかく、メインアプリケーションにそれらを含める必要があります。メインアプリの起動中に、すべてのコントローラーをロードする必要があります。npApp(ここにディレクティブを置きます)

于 2012-09-15T12:13:15.903 に答える