jsbin:http: //jsbin.com/oworoz/1/edit
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body ng-app="deeme">
<modal ></modal>
<script type="text/ng-template" id="templ1" >Bu birinci template</script>
<script type="text/ng-template" id="templ2" >Bu ikinci template</script>
<script type="text/ng-template" id="templ3" >Bu üçüncü template</script>
<button ng-controller="b1" ng-click="update()">templ1</button>
<button ng-controller="b2" ng-click="update()">templ2</button>
<button ng-controller="b3" ng-click="update()">templ3</button>
<script type="text/javascript">
angular.module ("deeme", [])
.factory("serv", function(){
return {
data: {
template: "templ1"
}
}
})
.controller("b1", ["$scope", "serv", function($scope, serv){
$scope.update = function(){
serv.data.template = "templ1";
}
}])
.controller("b2", ["$scope", "serv", function($scope, serv){
$scope.update = function(){
serv.data.template = "templ2";
}
}])
.controller("b3", ["$scope", "serv", function($scope, serv){
$scope.update = function(){
serv.data.template = "templ3";
}
}])
.directive("modal", ["serv", function(serv){
return {
restrict: "E",
template: "<div ng-include='currTempl'></div>",
replace: true,
link: ["$scope", function($scope){
$scope.currTempl = serv.data.template;
alert($scope.currTempl);
$scope.$watch(serv.data.template, function(newVal, oldVal){
$scope.currTempl = newVal;
});
}]
}
}])
</script>
</body>
</html>
我正在尝试制作一个类似模式的容器,每次单击不同的按钮时都会显示不同的模板。为了实现这一点,我创建了三个按钮和相关的控制器控制器,更新由服务提供的共享变量和将读取共享变量的指令,并根据共享变量的值更新给定元素的内容,当它改变时.
但我无法让指令发挥作用。我究竟做错了什么?