将对象从视图传递到angularjs中的视图

时间:2015-12-11 16:42:12

标签: angularjs

如何在angularjs中使用$ stateProvider将对象从一个页面传递到另一个页面?你能给我一些代码片段吗?我是角色

的新人

提前致谢

4 个答案:

答案 0 :(得分:1)

定义州时,您有几个选择:

.state('my-state', {
    url: '/my-state',
    templateUrl: 'my-state-url',
    params: {
        myProperty: 'some value',
    }
})

然后你可以在改变状态时这样做:

$state.go('my-state', {myProperty: 'new value'});

在状态控制器中,您可以像这样访问myProperty

$scope.myProperty = $stateParams.myProperty;

但是,根据您要传递的数据,可以/应该使用自定义角度服务。关于这个主题有一个很好的教程here

答案 1 :(得分:0)

您没有通过该对象,您传递了该对象的ID,这将允许您检索该对象。

你应该使用ui-router。

当定义状态时,您将URL定义为......

"url": '/an/example/path/:objectid',
"controller": "YourControllerForThisView",

使用COLON定义这是一个可变参数

然后在您的控制器中,您可以访问

state.params.objectid

然后在您的控制器中,您将调用类似...的方法

myService.getObjectFromList(state.params.objectid) 

OR

myService.getObjectFromHttpCall(state.params.objectid)

填充渲染视图时要使用的对象

希望这有帮助

答案 2 :(得分:0)

如果您正在寻找"通过"仅在几个(例如,两个或三个)视图之间的对象,然后使用$stateProvider就足够了。但是,如果应用程序的几个不同部分应检索/修改相同的对象,则最好将这些对象放在服务中。

例如,可以创建工厂来存储这样的对象。

(function () {
    angular.module('myApp').
        factory('myFactory', myFactory);

    function myFactory() {
        var object ={};

        var service = {
            getObject: getObject,
            setObject: setObject,
            setObjectProperty: setObjectProperty
        };
        return service;

        function getObject() {
            return object
        }

        function setObject(newObject) {
            //Some modification logic here
            object = newObject;
            return object;
        }

        function setObjectProperty(property, value) {
            //Modify/assign new object property here
            return object;
        }
    }
})();

然后,控制器可以使用工厂来检索/修改存储的对象。

(function () {
    angular.module('myApp').
        controller('MyController', MyController);

    function MyController(myFactory) {
        var vm = this,
            someObject = { ... };

        //Invoke public factory functions
        vm.object = myFactory.setObject(someObject);
    }
})();

答案 3 :(得分:0)

我解决了问题,问题出在angular-ui-router的版本中,jsut没有使用我的版本,更具体的是当我尝试在状态上添加params时出错