将数据从视图传递到控制器angularjs

时间:2016-07-19 08:33:15

标签: javascript angularjs angularjs-directive

我通过视图中的函数参数将值传递给控制器​​。然后我将该值存储在$ scope中。然后我试图通过范围访问相同的值,但在不同的HTML页面。但价值不可用。我正在使用UI路由器进行路由。谁能告诉你这可能是什么原因?

这是obj.roleId在openwindow1函数中传递给控制器​​的第一页。

    <!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <table class="table">
        <thead align="center" class="thead-inverse">
            <tr>
                <th>
                    Role Name
                    <div class="getSortClass('roleName')"></div>
                </th>
                <th>
                    Role ID
                    <div class="getSortClass('roleID')"></div>
                </th>
                <th>Action</th>
            </tr>
        </thead>
        <tbody>
            <tr align="center">
                <td>{{obj.roleName}}</td>
                <td>{{obj.roleID}}</td>
                <td><button class="btn btn-primary">Edit
                User</button><button class=
                "btn btn-primary">Delete</button></td>
            </tr>
        </tbody>
    </table>
</body>
</html>

这是控制器。我将值存储在$ scope.roleIdk中:

.controller('UserRoleEdit', ['$compile', '$scope', '$window',
   function($compile, $scope, $window) {
       $scope.openWindow1 = function(roleID) {
           $window.open(
               'http://localhost:9000/#/homepage/userRoleEdit',
               'User Role
Edit',
               'width=1300,height=1000');
           $scope.roleIDk = roleID;
           alert($scope.roleIDk);
       };
   }

]);

最后我试图在另一个html视图中访问它:          

{{roleIDk}}

      但我无法访问它。

1 个答案:

答案 0 :(得分:0)

如果您在视图之间共享它,则范围将不同,因此在视图范围中添加的任何内容都不会出现在另一个视图范围内。

您可以将其存储在服务中。服务是单身,因此它们将在您的所有视图中共享。

您也可以将其存储在浏览器本地存储中。

在您的场景中,您可能希望将其作为URL上的参数传递:

$window.open('http://localhost:9000/#/homepage/userRoleEdit/' + roleID, User Role Edit', 'width=1300,height=1000');

然后,您可以使用其他视图控制器中的$routeParams服务来访问它。