更新$ scope值

时间:2016-03-30 06:43:53

标签: angularjs angular-promise

我想在仪表板中动态显示添加的用户。 我的代码是以下面的方式。 控制器:实际操作触发的位置。 添加用户功能

$scope.addUser= function(){
    modalService.addUser();
}

function init(){
   // Someother functions
   getUserRequests()
};

function getUserRequests() {
    datacontext.getExtranetUserRequests()
        .then(function (data){
            vm.ExtranetUserRequest = data;
        });
};

服务:modalService

addUser: function (column) {
    var modalInstance = $modal.open({
       templateUrl: 'app/NewExtranetSite/Popup/userModal.html',
                controller: 'userModal',
       });

updateUser: function(){
    // updates the user
});

控制器:userModal 在添加信息后的userModal.html中,点击“保存”后,将触发添加用户功能。

function addUser(){
    datacontext.saveNewExtranetuserRequest($scope.user);
};

我想在用户模式中添加用户完成后启动getUserRequests()

这样新添加的用户可以在仪表板上隐藏而无需刷新页面

3 个答案:

答案 0 :(得分:0)

$ modal.open函数返回一个promise,因此很容易等待模态关闭然后执行另一个函数。让'addUser'返回此promise,然后在执行getUserRequests之前等待它完成:

modalService中的

addUser: function (column) {
    var modalInstance = $modal.open({
        templateUrl: 'app/NewExtranetSite/Popup/userModal.html',
        controller: 'userModal',
    });
    return modalInstance;
}
控制器中的

$scope.addUser= function(){
    modalService.addUser().then((resultReturnedFromModal) => {
        getUserRequests();
    });
}

答案 1 :(得分:0)

让我回答你。

  1. 您有一个视图,您可以使用一个表单()从输入中添加用户详细信息。
  2. 在ng-submit或ng-click操作中,您可以在该特定视图的控制器中调用一个方法。
  3. 现在要显示用户详细信息,您可能知道json。因此,创建一个空白$ scope变量,其中包含添加的用户详细信息。($ scope.variable = [];)
  4. 现在提交刚刚点击**
  5.   

    $ sope.variable.push({ '键':值, '值':值});

    ** 一旦您的对象填充了新数据,它将自动显示在视图中。 我们有一个非常棒的ng-repeat angular指令来显示包含对象的动态列表。 6. **

      

    ng-repeat =“按$ index在可变轨道中键入”

    **

答案 2 :(得分:0)

对不好的帖子感到抱歉。

让我在这篇文章中简要解释一下

我想在页面上动态显示添加的数据。 我有一个用户添加操作的控制器。

polyroots

我正在使用服务modalService来处理添加用户请求。

 (function () {
'use strict';

var controllerId = 'newUser';

angular.module('app').controller(controllerId,

    ['modalService', '$scope', 'dataContext', newUser]);

function newUser(modalService, $scope, dataContext) {

    init();


    function init() {

        var extranetSiteRequestId = +$routeParams.id;
        if (extranetSiteRequestId && extranetSiteRequestId > 0) {
            getItem(extranetSiteRequestId);
            getUserRequests();

        }


    }
    $scope.newuserRequest = function () {


        modalService.addUser();

    }

    function getUserRequests() {
        datacontext.getExtranetUserRequests().then(function (data) {
            vm.UserData = data;
        });

    };
    }
}());

最后在userModal控制器中处理新用户添加的请求

(function (){
    'use strict';

    var serviceId = 'modalService'

    angular.module('app').service(serviceId, ['$modal', modalService]);

    function modalService($modal) {

        return {


            addUser: function () {


                var modalInstance = $modal.open({
                    templateUrl: 'app/NewExtranetSite/Popup/userModal.html',
                    controller: 'userModal',



                });
                modalInstance.result.then(function (userDetails) {
                    if (userDetails) {
                        alert(userDetails) ;
                    };
                })






                },
        };
    }
})();

现在的问题是我想在modalService.adduser完成后在 newUser 控制器中添加成功或功能

EX:modalService.addUser()。then(function(results){

(function () {

    'use strict';

    var controllerId = 'userModal';
    angular.module('app').controller(controllerId, ['$scope', '$modalInstance', 'datacontext', 'common', addUserModalFunction]);

    function addUserModalFunction($scope, $modalInstance, datacontext, common) {

        var vm = $scope;

        vm.cancel = cancel;

        vm.submit = addUser;

        init();



        function init() {
            common.logger.log("controller loaded", null, controllerId);
            common.activateController([], controllerId);
        }
        function cancel() {
            $modalInstance.close();

        }
        $scope.open = function ($event, opened) {
            $event.preventDefault();
            $event.stopPropagation();

            $scope[opened] = true;
        };

        function addUser() {

            datacontext.saveNewExtranetuserRequest($scope.user).then(function(data){
                $modalInstance.close($scope.user);
                });
            };




    };








})(); 

Fikkatra感谢您的回复,但无法实现

非常糟糕@ angular