3

私はAngularJSが初めてです。ディレクティブを動的に使用しようとしてng-includeいますが、機能しません。例えば

var template = '<div ng-include="/app/partials/HtmlPage.html"></div>'
4

2 に答える 2

15

Angular ドキュメントから:

If the source is a string constant, make sure you wrap it in quotes, e.g. src="'myPartialTemplate.html'".

これらの内側の引用符を文字列テンプレート名に追加してみてください。

var template = '<div ng-include="\'/app/partials/HtmlPage.html\'"></div>'

(すでに文字列になっているため、内側の引用符をエスケープする必要があることに注意してください)

于 2013-07-19T22:26:53.590 に答える
0

コードをもっと表示する必要があります。ディレクティブのテンプレートに ng-include を使用して、さまざまなテンプレートを動的にロードして使用するために使用しているディレクティブがあります。これがどのように機能するかを見て、ng-includeが機能しない原因となるあなたの行動を想像できません。インスペクタなどをチェックして、HTMLPage.html がロードされているか、404 が取得されているかを確認しましたか?

directive("dynamicFormInput", ['$http', '$templateCache', function($http, $templateCache){
    return {
        restrict: 'E',
        scope: {model: '=', section: '='},
        template: '<ng:include src="tpl"></ng:include>',
        link: function(scope, iElement, iAttrs) {
            switch(scope.section.sectionTypeId)
            {
                case 1:
                    $http.get('partials/survey/textInput.html', {cache:$templateCache});
                    scope.tpl="partials/survey/textInput.html";
                break;
                case 2:
                    $http.get('partials/survey/selectOneOption.html', {cache:$templateCache});
                    scope.tpl="partials/survey/selectOneOption.html";
                break;
                case 3:
                    $http.get('partials/survey/multiSelectOption.html', {cache:$templateCache});
                    scope.tpl="partials/survey/multiSelectOption.html";
                break;
                case 4:
                    $http.get('partials/survey/boolean.html', {cache:$templateCache});
                    scope.tpl="partials/survey/boolean.html";
                break;
                case 5:
                    $http.get('partials/survey/multiSelectOption.html', {cache:$templateCache});
                    scope.tpl="partials/survey/multiSelectOption.html";
                break;
                case 6:
                    if(scope.section.sectionId == 19){
                        $http.get('partials/survey/addressSelection.html', {cache:$templateCache});
                        scope.tpl="partials/survey/addressSelection.html";
                    }
                break;
            }
        }
    }
}])
于 2013-07-19T19:43:48.807 に答える