使用C#,。Net,MVC5,AngularJS和Select2下拉控件,dd位于布局的顶部,用户可以在其中选择项目。 select2控件按照概述here填充。
我创建了一个全局Angular服务,如下所示:
var app = angular.module('app', ['kendo.directives', 'ngResource', 'ngRoute', 'ngSanitize', 'ui.select2']);
app.factory('globalContainer', function () {
var globalContainer = {};
globalContainer.dashboardGlobals = {
userContext: Object(null),
currentProject: Object(null),
projectList: Object(null),
testString: "Global Test String!!!"
};
return globalContainer;
});
按如下方式在控制器中设置值:
app.controller('projectListController', ['$rootScope', '$scope', '$log', 'abstractDataFactory', 'customUIFunctions', 'globalContainer',
function ($rootScope, $scope, $log, abstractDataFactory, customUIFunctions, globalContainer) {
var vm = this;
vm.dashboardGlobals = globalContainer.dashboardGlobals;
...
vm.dashboardGlobals.projectList = result.value;
// make a restful call w/ data to set value on server side
问题是当我加载新页面时,值已重置。我猜这是否是一个Angular SPA,这不是问题,但这不是SPA。
我可以启动对控制器的后台调用来填充服务器上的自定义用户上下文(UserContext.Identity.CurrentProject),但放弃了这个以支持尝试Angular方式。
基本上,当DD被更改时,我想在客户端设置一个全局可访问的对象(我已经可以在服务器端执行此操作)。
考虑到当前的技术堆栈,最好的方法是什么?
建议好吗?
答案 0 :(得分:0)
如果要将其保存在浏览器/客户端,请查看https://github.com/browserstate/history.js/。
否则,您必须将信息发回服务器并从模型或ViewBag填充它。