如何在angularjs中使用$ stateProvider将对象从一个页面传递到另一个页面?你能给我一些代码片段吗?我是角色
的新人提前致谢
答案 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时出错