0

私はangularjsが初めてで、以下の部分は常に私をかなり混乱させます

angular.module('bookYourSeatApp', [])
    .factory('seats', SeatsFactory)
    .controller('mainCtrl', MainCtrl);

routeparams を取得したいので試してみました

function SeatsFactory($rootScope, $timeout, $routeParams) {

function MainCtrl(seats, $routeParams) {

他のいくつかの場所に $routeparams を挿入すると、どこでもエラーが発生します。コードはfiddleにあります。以下のコードに $routeparams を挿入するにはどうすればよいですか?

angular.module('bookYourSeatApp', [])
    .factory('seats', SeatsFactory)
    .controller('mainCtrl', MainCtrl);

function SeatsFactory($rootScope, $timeout) {


    //more code
    var factory = {
        map: seats,
        setSeats: setSeats,
        select: selectSeats,
        checkedSeats: checkedSeats,
        availCount: {},
        setAvailCount: function(count) {
            console.log('avail', count);
            checkSelected(count);
        }
    };

    return factory
}

function MainCtrl(seats) {
    // console.log($routeParams);
    var vm = this;
    angular.extend(vm, {
        seats: seats,
        selectionCount: [//[0,1,2,3,4],[
        {id: 0, val: 0}, // object for two-way binding
        ],
        selectedCount: 0
    });

    vm.selectedCount = vm.selectionCount[0];
    seats.setAvailCount(vm.selectedCount);
}
4

2 に答える 2

0
angular.module('bookYourSeatApp', [])
    .factory('seats', SeatsFactory)
    .controller('mainCtrl', MainCtrl);

   MainCtrl.$inject = ['$routeParams'];

function SeatsFactory($rootScope, $timeout) {


    //more code
    var factory = {
        map: seats,
        setSeats: setSeats,
        select: selectSeats,
        checkedSeats: checkedSeats,
        availCount: {},
        setAvailCount: function(count) {
            console.log('avail', count);
            checkSelected(count);
        }
    };

    return factory
}

function MainCtrl(seats, $routeParams) {
    console.log($routeParams);
    var vm = this;
    angular.extend(vm, {
        seats: seats,
        selectionCount: [//[0,1,2,3,4],[
        {id: 0, val: 0}, // object for two-way binding
        ],
        selectedCount: 0
    });

    vm.selectedCount = vm.selectionCount[0];
    seats.setAvailCount(vm.selectedCount);
}

サービスの初期パラメータとして $routeParams を注入しないことをお勧めします。代わりに、コントローラーに注入します。factory はシングルトンです

于 2016-11-01T05:04:58.423 に答える
0

ファクトリとコントローラーを作成する前に、これらのインジェクションを見逃した可能性があります

SeatsFactory.$inject = ['$rootScope', '$timeout'] //make sure if you need 2 params in your SeatsFactory function, inject 2 params as well here
MainCtrl.$inject = ['seats', '$routeParams'] //as well the controller

覚えておいてください: Service/Factory はシングルトンである共有リソースです。このシングルトンがいくつかの依存パラメーターを受信することを望まない場合があります。サービス/ファクトリーが続行する必要があるデータを渡すだけです。

それが役に立てば幸い。

于 2016-11-01T05:45:19.163 に答える