我用一組視圖創建了名爲「app.product」的自定義模塊。AngularJS檢查模塊是否存在使用NG-IF
在主導航中,我創建了相關視圖的鏈接。以下2個產品相關鏈接的示例。
<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>
我只希望爲產品,創造新產品,以顯示僅在「app.product」模塊註冊到應用程序。
我通常嘗試的語法如下:
<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>
這不工作.... 我試圖創建一個返回一個布爾值的方法,並且不與NG-如果擦出火花。
什麼樣的令人沮喪的是,它的工作原理,如果我手動硬編碼的true/false:
<li ng-if="false"><a ui-sref="productList">Products</a><li>
這裏是我的模塊佈局和主AppController的
//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", []);
創建的方法appController不起作用。這只是返回如下錯誤:
<ul class="nav">
<li>...</li>
<li ng-if="vm.moduleExists('product')"><a ui-sref="productList">Products</a></li>
<li ng-if="vm.moduleExists('product')"><a ui-sref="productAdd({productId:0})>Create New Product</a></li>
</ul>
$ injector.has()將服務名稱作爲參數。不是模塊名稱。 –
@JBNizet是啊我提到,在實際的答案 – vittore
其實這是不正確的。我遵循基於特徵的模塊模式,因此如果我刪除應用程序運行的模塊。去除模塊的鏈接默認爲默認路由路徑。除了在導航中仍然變慢的鏈接之外,一切都很完美。 – Proximo