2017-01-25 5 views
1

Я пытаюсь реализовать iife и этот стиль отделить мои файлы в angularjs поэтому у меня есть config.js, которые будут использовать ui.router, который был реализован этот путьAngularJs: Реализован IIFE в использовании щ маршрутизатор

//config.js 
(function (module) { 
    "use strict"; 
    module.config([ 
     "$stateProvider","$urlRouterProvider","$locationProvider", 
    function ($stateProvider, $urlRouterProvider,$locationProvider) { 

      $urlRouterProvider.otherwise("/Views/Profile.html"); 

      $stateProvider 
        .state("profile", { 
         url: "/", 
         templateUrl: "Profile.html", 
         controller: "profileController as vm" 
        }) 
        .state("profiledetails", { 
         url: "ProfileDetails", 
         templateUrl:"ProfileDetails.html", 
         controller: "profileController as vm" 
        }) 

     } 
    ]) 

})(angular.module("appMain", ["ui.grid","ui.router","profileService"])); 

и у меня есть этот profile.html, который имеет ссылку на profiledetail.html

<!DOCTYPE html> 
<html ng-app="appMain"> 

<head> 
    <title></title> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width,initial-scale=1.0" /> 

    <link href="../Content/ui-grid.css" rel="stylesheet" /> 
    <link href="../Content/bootstrap.min.css" rel="stylesheet" /> 

</head> 

<body class="container-fluid"> 
    <div ng-controller="profileController"> 
    <div id="profileGrid" ui-grid="gridOptions"></div> 
    </div> 
    <script src="../scripts/angular.js"></script> 
    <script src="../scripts/angular-ui-router.js"></script> 

    <script src="../scripts/angular-resource.js"></script> 
    <script src="../scripts/ui-grid.min.js"></script> 
    <script src="../scripts/App/config.js"></script> 
    <script src="../scripts/App/Profile/profileService.js"></script> 
    <script src="../scripts/App/Profile/profileController.js"></script> 

    <script src="../scripts/App/helper.js"></script> 

    <a href="#" ui-sref="profiledetails" class="btn btn-primary">profile details</a> 
    <div ui-view></div> 
</body> 

</html> 

и это мой profilecontroller.js

При запуске кода и при нажатии на ссылку theres появляется ошибка в chrome, говорящая «Ошибка: не удалось разрешить« профилированные детали »из состояния« »». Не уверен, что моя реализация iife вызвала эту проблему. Пожалуйста, кто-то подскажет мне правильный путь.

+0

Вам нужно перейти в состояние сначала с начала: http://stackoverflow.com/a/41781397/2829204 – CozyAzure

+0

Я попробовал два способа ввода состояния, которое было упомянуто в сообщении, но ошибка все еще возникает. но, как я сказал в своем ответе @Matthew Cawley, когда я удалял ui.router как зависимость в контроллере, он удаляет ошибку, но ничего не происходит, она не перенаправляется. '}) (angular.module (" appMain ", [" profileService "," ui.grid "]));' –

ответ

1

Вы не необходимо повторно ввести зависимости модуля при создании profileController, а параметр iife должен немедленно следовать за закрывающей фигурной скобкой, так:

})(angular.module("appMain", ["profileService", "ui.grid","ui.router"])); 

может стать:

}(angular.module("appMain"))); 

Таким образом, вы извлекая ранее созданный модуль, а не создавать новый. См. Раздел Creation versus Retrieval в документах для заметки об этом.

Также onProfiles массив (не функция), поэтому я думаю, что вам нужно изменить:

function getProfiles() { 
    profileService.getProfiles() 
     .then(onProfiles(result)); 
    }; 

Чтобы что-то больше, как это:

function getProfiles() { 
    profileService.getProfiles() 
     .then(function(result){ 
      // do something with the "onProfiles" array here. 
     }); 
    }; 
+0

Я действительно пробовал, но он не отображает мою сетку ui и ее данные. Одна вещь, которую я замечаю, это то, что когда я пытался удалить ui.router только как}) (angular.module ("appMain", ["profileService", "ui.grid"])); Ошибка исчезла, но она не перенаправила на profiledtails html –

+0

Обновленный ответ, предлагающий небольшую поправку к функции обратного вызова обещания (при условии, что вы возвращаете обещание от службы). –

+0

Я согласен с вами, он должен использовать сервис, но на данный момент он просто использует переменную onProfiles для данных сетки ui. –

1

Вы используете один и тот же контроллер в своем профиле, который подробно profileController

Так что в вашем HTML, вы должны добавить

<a href="#" ui-sref="profiledetails" class="btn btn-primary">profile details</a> 

<div ui-view></div> 

таким образом, что маршрутизации профиль детали может обрабатывать

+0

да, простите, я забыл включить это в свой пост. плохо обновить мой пост. Ошибка все еще происходит, даже если у меня это есть. –

Смежные вопросы