我创建了一个名为" app.product"的自定义模块。有一组意见。
在主导航中,我创建了相关视图的链接。以下2个产品相关链接的示例。
StringEscapeUtils.unescapeJava("First\\nSecond").equals(jsono.getString("key"));
我只喜欢“产品”和“创建新产品”,只显示" app.product"模块已注册到应用程序。
我通常尝试使用以下语法:
<ul class="nav">
<li><a ui-sref="home">Home</a></li>
<li><a ui-sref="productList">Products</a></li>
<li><a ui-sref="productAdd({productId:0})>Create New Product</a></li>
</ul>
这不起作用.... 我尝试创建一个返回bool的方法,并且如果有的话,它不能用于ng。
如果我手动硬编码真/假,它会有什么令人沮丧的:
<ul class="nav">
<li>...</li>
<li ng-if="angular.module('app.product')"><a ui-sref="productList">Products</a></li>
<li ng-if="angular.module('app.product')"><a ui-sref="productAdd({productId:0})>Create New Product</a></li>
</ul>
这是我的模块和主appController的布局
<li ng-if="false"><a ui-sref="productList">Products</a><li>
在appController中创建方法不起作用。它只会在下面返回false:
//main application module
angular.module("app", ['ui.router',"app.product"]);
//main application controller
angular.module("app").controller("AppController", AppController);
function AppController(){
var vm = this;
vm.moduleExists = function(name){
try{
angular.module(name);
return true;
}
catch(err){
return false;
}
};
}
//app.product module
angular.module("app.product", []);
答案 0 :(得分:1)
更新:您似乎有某种误解。
如果您的模块定义与您在问题中的方式相同:
angular.module("app", ['ui.router',"app.product"]);
您不会定义ui.router
或app.product
个模块,您的app
模块会抛出一个例外。检查jsfiddle。
Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:modulerr] Failed to instantiate module app.product due to:
Error: [$injector:nomod] Module 'app.product' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
所以你的模块将永远在这里。
这不是“有棱有角”的做事方式。如果将app.product
作为依赖项包含在内,它将始终为您的代码定义,或者角度应用程序甚至不会启动。
但是,您始终可以使用$injector
作为依赖,并询问是否存在具有特定名称的依赖项。
angular.module('app').controller('myCtrl', myCtrl)
myCtrl.$inject = ['$scope','$injector']
function myCtrl($scope, $injector) {
$scope.moduleProductExists= $injector.has('product')
}
并在ng-if
<li ng-if="moduleProductExists"><a ui-sref="productList">Products</a></li>
但请注意,它正在检查控制器/服务/指令是否存在,而不是整个模块。
如果您尝试使用依赖性做异国情调,请提供更多详细信息。