Angular-UI Модальное разрешение

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

db.mycoll.find().forEach(function(obj) { 

    if (obj.hasOwnProperty('phone')) {
        obj.phone = "" + obj.phone;  // int or longint to string
    }

    if (obj.hasOwnProperty('field-name')) {
     obj.field-name = new NumberInt(obj.field-name); //string to integer
    }

    if (obj.hasOwnProperty('cdate')) {
        obj.cdate = new ISODate(obj.cdate); //string to Date
    }

    db.mycoll.save(obj); 
});
16
задан Muhammad Raihan Muhaimin 17 May 2015 в 18:09
поделиться

1 ответ

Вот построчная разбивка:

$scope.checkout = function (cartObj) {

Создается переменная $ scope с именем checkout, которая ссылается на функцию, чтобы вы могли вызывать ее в представлении как checkout() (например, от кнопки с ng-click = "оформить заказ").

Эта функция передается службе с именем cartObj.

var modalInstance = $modal.open({

Переменная modalInstance используется для вызова метода $ modal service open.

Модальная служба UI Bootstrap $ возвращает модальный экземпляр. Методу open передается объект, который определяет конфигурацию модального экземпляра следующим образом:

templateUrl : 'assets/menu/directives/payment-processing-modal.tmpl.html',

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

controller : ["$scope", "$modalInstance", "cartObj", function($scope, $modalInstance, cartObj) {
  }],

Это создает контроллер для модального экземпляра, которому передается $ scope, служба $ modalInstance и, что важно, разрешенная служба cartObj.

Сервисы - это синглтоны, которые используются для обмена данными между контроллерами. Это означает, что существует одна версия службы cartObj, и если один контроллер обновляет ее, другой контроллер может запросить службу и получить данные, которые были обновлены любым другим контроллером. Это замечательно, но если переменная должна быть инициализирована с некоторым значением из службы при загрузке контроллера, она вернет undefined, потому что сначала нужно запросить, а затем ждать, чтобы получить данные обратно. Вот где решается проблема:

  resolve : { // This fires up before controller loads and templates rendered
    cartObj : function() {
       return cartObj;
    }
  }
});

Причина использования разрешения, вероятно, заключается в том, что сам шаблон зависит от того, какие данные из cartObj доступны, КОГДА шаблон загружается. Resolve разрешит обещания ДО того, как контроллер загрузится, поэтому, когда это произойдет, данные будут там и готовы. По сути, разрешение упрощает инициализацию модели внутри контроллера, поскольку исходные данные передаются контроллеру, а не контроллеру, который должен выходить и получать данные.

Разрешенный cartObj - это то, что передается в modalInstance и поэтому может быть доступно в контроллере как: cartObj. someproperty .

29
ответ дан jme11 17 May 2015 в 18:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: