在app.js&中配置工厂的问题stateProvider

时间:2016-08-09 04:11:38

标签: javascript angularjs ionic-framework angular-ui-router

我正在尝试在我的离子应用程序的app.js中设置工厂。我有以下代码应该可以工作,但我的州提供商让我失望,我不知道我的州应该在哪里。我被建议使用这个app.js代码让我的工厂工作,但它没有留下我的路线的空间。我尝试了以下的不同变体,没有lck。提前告诉你。

(function() {
  'use strict';

  angular
    .module('starter', []) // In your real application you should put your dependencies.. ['ng...']
    //.run(runFunction) // Just commenting to make it WORK HERE
    .controller('MainCtrl', MainCtrl)
    .factory('myService', myService);

  // Just commenting to make it work here..
  /*function runFunction($ionicPlatform) {
    $ionicPlatform.ready(function() {
      // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
      // for form inputs)
      if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
        cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        cordova.plugins.Keyboard.disableScroll(true);

      }
      if (window.StatusBar) {
        // org.apache.cordova.statusbar required
        StatusBar.styleDefault();
      }
    })
  }*/


  MainCtrl.$inject = ['$scope', 'myService'];

  function MainCtrl($scope, myService) {
    function getSuccess(response) {
      $scope.items = response.data;
    }

    function getError(response) {
      console.log('Of course an error since the url is a invalid, but it should work with a valid url!');
    }

    myService.getAll()
      .then(getSuccess)
      .catch(getError);
  }

  function myService($http) {
    var factory = {
      getAll: getAll
    };

    return factory;

    function getAll() {
      return $http.get("url"); // it -> should be your URL
    }
  }
})();


// dont know where the config goes?

.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider

  // setup an abstract state for the tabs directive
    .state('tab', {
    url: '/tab',
    abstract: true,
    templateUrl: 'templates/tabs.html'
  })

    .state('login', {
      url: "/login",
      cache: false,
      controller: 'AccountCtrl',
      templateUrl: "templates/login.html"
    })

    .state('list', {
      url: "/list",
      cache: false,
      controller: 'ListCtrl',
      templateUrl: "templates/list.html" 
    })

  $urlRouterProvider.otherwise('/tab/dash');

});

1 个答案:

答案 0 :(得分:0)

我没有看到你在你的应用中加入了ui.router。要使用$ stateProvider,您应该将ui.router模块放在您的依赖项中,并且应该在项目中包含angular-ui-router.js文件。

angular
    .module('starter', ['ui.router']) // In your real application you should put your dependencies.. ['ng...']
    //.run(runFunction) // Just commenting to make it WORK HERE
    .controller('MainCtrl', MainCtrl)
    .factory('myService', myService);

ui.router是为您提供$ stateProvider的模块。

此后.config可以与.controller.factory等模块一起使用。配置也在您的app上定义:

angular.module('starter', ['ui.router'])
         .config(configFn) //configFn is the function you have in your .config
        .controller('MainCtrl', MainCtrl)
        .factory('myService', myService);