Редактор пользовательских разделов Umbraco 7, перенос определения контроллера из вида в отдельный файл

Я создал свой новый пользовательский раздел для бэкенда Umbraco 7. Теперь я создал редактор свойств файла edit.html с кодом:

<script type="text/javascript">
function CustomSectionEditController($scope, $log, $routeParams) {
    $scope.content = { tabs: [{ id: 1, label: "Tab 1" }, { id: 2, label: "Tab 2" }] };

    $scope.EditMode = function () {
        $log.warn($routeParams);
        return $routeParams.create == 'true';
    };
}
</script>

<div ng-controller="CustomSectionEditController">
    <umb-panel>
        <umb-header tabs="content.tabs">
            <div class="umb-headline-editor-wrapper span12 ng-scope">
                <h1 class="ng-binding">My custom section {{id}}</h1>
            </div>
        </umb-header>

        <umb-tab-view>
            <umb-tab id="tab1" rel="svensson">

                <div class="umb-pane">
                    This is tab content for tab 1<br />
                    <p ng-show="EditMode()">
                        <span class="label label-warning">In create mode, this label is only showed when the controller sees the create-querystring item.</span>
                    </p>
                </div>
            </umb-tab>

            <umb-tab id="tab2" rel="kalle">

                <div class="umb-pane">

                    This is tab content for tab 2
                </div>
            </umb-tab>

        </umb-tab-view>
    </umb-panel>

</div>

И это хорошо работает, но я хочу перенести бизнес-логику из представления в отдельный файл. Я попытался переместить код JS в отдельный файл и сделать ссылку на него следующим образом:

<script type="text/javascript" src="Controllers/StoreEditController.js"></script>

И Angular не хочет внедрять мой контроллер в приложение. Как я могу переместить контроллер в отдельный файл и сделать ссылку на него, на мой взгляд? Является ли это возможным?

Извините за мой английский, пожалуйста. С уважением, Антон


person Hellaren    schedule 08.06.2014    source источник


Ответы (2)


Я сделал то же самое не так давно в Umbraco 7. Как выглядит ваш JS-файл? Я предполагаю, что вы не добавляете свой контроллер в приложение «umbraco», подобное этому, в отдельном файле js.

    angular.module("umbraco").controller("CustomSectionEditController",
        function ($scope, $log, $routeParams) {
                $scope.content = { tabs: [{ id: 1, label: "Tab 1" }, { id: 2, label: "Tab 2" }] };
                $scope.EditMode = function () {
                     $log.warn($routeParams);
                     return $routeParams.create == 'true';
                };
          }
     });

Кроме того, не забудьте включить этот новый файл js в ваш package.manifest.

Надеюсь, это то, что вы ищете!

person Logan    schedule 17.06.2014

Убедитесь, что вы используете безопасный синтаксис минимизации для внедрения зависимостей.

angular.module("umbraco")
  .controller("ExampleController",
  ['$scope', '$log', function($scope, $log) {
    //do some stuff
  }]);

Кроме того, добавьте файл package.manifest прямо в App_Plugins/YourPlugin/ со следующим содержимым:

{   
    //array of files we want to inject into the application on app_start
    javascript: [
        '~/App_Plugins/YourPlugin/path/to/jsfile.js'
    ]
}

Вот лучший пример этого, который я нашел:

UkFest-AngularJS-Demo

person Timothy Lee Russell    schedule 07.01.2015