需要将服务/工厂存储为一个值
need to store a service/factory as a value
我觉得我一直在想我的mvc的解决方案。NET/angularjs项目。
目前,我觉得我做得很好,将视图抽象为使用控制器,该控制器是controller.cs特定类的类型名称,例如:
<body ng-controller="@Model.ControllerType.Name">
...
</body>
这是控制器
superSiteApp.controller("MediaController", ["$scope", "$window", "SubNavFactory", function ($scope, $window, SubNavFactory) {
...
});
这项工作似乎做得很好,但最近我一直在努力处理与sub-v相关的项目。在一个部分中,我基本上是强行使用它(因为它不是这样的服务)。在这种情况下,我正在建立一个工厂:
var superSiteApp = angular.module('superSiteApp', []);
superSiteApp.factory("SubNavFactory", ["subNavCollectionWrapper", function (subNavCollectionWrapper) {
return {
get: function() {
return subNavCollectionWrapper.get();
}
};
}]);
后来我把它推到这里,就像这样:
@section AdditionalHeaderLinks
{
<script language="javascript" type="text/javascript">
superSiteApp.value("subNavCollectionWrapper", {
get: function() {
return @Html.Raw(Json.Encode(Model.Menus[1].Links));
}
});
</script>
}
这部分工作得很好,但现在我需要做一个调用api的部分。
所以这个想法有点像:
superSiteApp.service("SubNavFactoryUri", ["$http", "uri", function ($http, uri){
return $http.get(uri);
}]);
这就是我迷路的地方。在我的新View.chtml文件中,我不知道如何使该连接正常工作。
@section AdditionalHeaderLinks
{
<script language="javascript" type="text/javascript">
superSiteApp.value("subNavCollectionWrapper", /* this is my struggle */);
</script>
}
我不知道如何引用服务来传递它。是的,我可以自己创建一个函数类,但我想我应该利用angularjs。
也许这里的方法不正确,因为这是我唯一能想到的事情。如有任何建议,我们将不胜感激。
感谢
经过一段时间的思考,我将事情从使用value()方法改为提供工厂。有几件事我需要解决,但我越是把它分解,它就越有意义。
现在的想法是:
// same as before, this is for hard coded elements
superSiteApp.factory("SubNavFactory", ["subNavCollectionWrapper", function(subNavCollectionWrapper) {
return {
"get": function () {
return subNavCollectionWrapper.get();
}
};
}]);
// This is the idea from above
superSiteApp.service("SubNavServiceUri", ["$http", function($http) {
return {
get: function(uri) {
return $http.get(uri);
}
};
}]);
// now we put them together. I'll use the get(action) method to call the item
superSiteApp.factory("SubNavFactories", ["SubNavFactory", "SubNavServiceUri", function(SubNavFactory, SubNavServiceUri) {
return {
"ActionName1": {
"get": function () {
return SubNavServiceUri.get("/the/rest/api");
}
},
"ActionName1": SubNavFactory,
"get" : function(action) {
return this[action].get();
}
};
}
]);
相关文章:
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 将脚本缓存到本地存储的basket.js概念仍然是一个好主意吗
- 我该如何编写一个CouchDB视图,列出每个存储文档的大小
- Javascript使用本地存储,回调对象并用Json更改为一个字符串以用于填充函数
- 使用本地存储在一个页面上自动填写多个表单
- 我有一个javascript类和该类的对象,我想将该对象存储在本地存储中并检索它
- 制作一个阻止存储在浏览器历史记录中的网页
- 创建一个变量并在页面之间移动时“存储它”,jQuery
- 拆分一个句子并使用JavaScript将其存储在数组中
- 如何使用Javascript将表单数据存储到另一个页面的表中
- Javascript下载一个URL-Azure Blob存储
- 存储一个事件处理程序中的变量以供另一个事件处理器使用
- 需要将服务/工厂存储为一个值
- 在Javascript数组或一个对象中存储多个数据所需的Tweak
- Javascript——运行一个存储在JSON属性中的函数
- 为什么在flux应用架构中每个实体使用一个存储?
- 如何在extjs中创建一个存储在控制器中的实例
- ExtJS:连接一个存储到一个组合框
- 对相同类型的多个元素使用一个存储
- MobX -运行一个存储的构造函数在另一个