AngularJS kullanarak dinamik bir web uygulaması oluşturuyorum. ng-view
Tek bir şablonda birden fazla olması mümkün mü ?
AngularJS kullanarak dinamik bir web uygulaması oluşturuyorum. ng-view
Tek bir şablonda birden fazla olması mümkün mü ?
Yanıtlar:
Sadece bir tane alabilirsin ng-view
.
Birkaç şekilde içeriğini değiştirebilirsiniz: ng-include
, ng-switch
ya routeProvider aracılığıyla haritalama farklı kontrolörleri ve şablonları.
ng-show
ve ile tanımlamak ve ng-hide
değişkenleri kullanarak görünürlüğünü kontrol etmek daha iyi değil mi? Çünkü bazen birden fazla bileşeni gizlemek / göstermek isteyebilirim
UI-Router , yardımcı olabilecek bir projedir: https://github.com/angular-ui/ui-router Özelliklerinden biri Çoklu Adlandırılmış Görünümlerdir
UI-Router birçok özelliğe sahiptir ve gelişmiş bir uygulama üzerinde çalışıyorsanız kullanmanızı tavsiye ederim.
Birden Çok Adlandırılmış Görünüm belgelerine buradan bakın .
Sadece bekar olarak başarabileceğine inanıyorum ng-view
. Ana şablonda ng-include
alt görünümler için bölümlere sahip olabilir , ardından ana kontrolörde her bir alt şablon için model özelliklerini tanımlayabilirsiniz. Böylece ng-include
bölümlere otomatik olarak bağlanacaklar . Bu, birden çokng-view
Belgelerde verilen örneği kontrol edebilirsinizng-include
Örnekte açılır listeden şablonu değiştirdiğinizde içeriği de değiştirir. Burada bir ana sayfanız olduğunu varsayın ng-view
ve açılır menüyü seçerek alt içeriği manuel olarak seçmek yerine, ana görünüm yüklendiğinde olduğu gibi yaparsınız.
ng-include
dokümantasyondaki örnek gibi denetleyicide özel mantık kullanarak bunu gerçekleştirebiliriz , ancak bu arzu edilen uygulama mimarisi modeli değildir, UI-Router doğru çözüm türüdür.
Normal ng-view
modülü kullanarak birden fazla dinamik şablonunuz olamaz.
Bununla birlikte, bu proje bunu yapmanızı sağlar (arayın ui-router
).
Birden çok veya iç içe görünüme sahip olmak mümkündür. Ama ng-view ile değil.
Açısal olarak birincil yönlendirme modülü birden fazla görünümü desteklemez. Ancak ui-yönlendiriciyi kullanabilirsiniz. Bu, Github, açısal-ui / ui-yönlendirici aracılığıyla alabileceğiniz üçüncü taraf bir modüldür, https://github.com/angular-ui/ui-router . Ayrıca ngRouter'ın (ngNewRouter) yeni bir sürümü şu anda geliştirilmektedir. Şu anda kararlı değil. Bu yüzden size ui-router ile basit bir başlangıç örneği veriyorum. Bunu kullanarak görünümleri adlandırabilir ve bunları oluşturmak için hangi şablonların ve denetleyicilerin kullanılması gerektiğini belirleyebilirsiniz. $ StateProvider'ı kullanarak, belirli bir durum için görünüm yer tutucularının nasıl işleneceğini belirtmelisiniz.
<body ng-app="main">
<script type="text/javascript">
angular.module('main', ['ui.router'])
.config(['$locationProvider', '$stateProvider', function ($locationProvider, $stateProvider) {
$stateProvider
.state('home', {
url: '/',
views: {
'header': {
templateUrl: '/app/header.html'
},
'content': {
templateUrl: '/app/content.html'
}
}
});
}]);
</script>
<a ui-sref="home">home</a>
<div ui-view="header">header</div>
<div ui-view="content">content</div>
<div ui-view="bottom">footer</div>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js">
</body>
Bu örnek için angularjs ve angular-ui.router referansına ihtiyacınız var.
$ bower install angular-ui-router
Birden çok ng görünümüne sahip olamazsınız. İhtiyacımı çözdüğüm kullanım durumum aşağıdadır. Model diyaloğumda sekmeli davranışa sahip olmak istedim. Yönlendirici bağlantılarını çağıracak köprüye sahip sekmelere tıklarken sorunla karşılaşıyordum. Bunu sekmeler için button ve css kullanarak çözdüm. Kullanıcı sekmeyi tıkladığında, aslında her zaman ng-yönlendiriciyi çağıracak herhangi bir köprü çağırmayacaktır. Kullanıcı sekmeyi tıkladığında, html'yi dinamik olarak yüklediğim bir yöntemi çağıracaktır. Aşağıda, sekmeye tıklama işlevi
self.submit = function(form) {
$templateRequest('resources/items/employee/test_template.html').then(function(template){
var compiledeHTML = $compile(template)($scope);
$("#d").replaceWith(compiledeHTML);
});
Kullanıcı $ templateRequest. Test_template.html sayfasında html içeriğinizi ekleyin. Bu html içeriği denetleyicinize bağlanacaktır.