Javascript AngularJS:动态编译指令

Javascript AngularJS:动态编译指令,javascript,angularjs,directive,Javascript,Angularjs,Directive,这是[扑通声]: 我想要的是,当我单击login时,auth指令应该自动将模板更改为“logout.html”,然后当单击logout时,切换为使用“login.html”。 但到目前为止,我应该手动刷新页面以指示切换模板 如何实现此目的?使用路由 app.config(['$routeProvider', function ($routeProvider) { $routeProvider .when('/login', { templateUr

这是[扑通声]:

我想要的是,当我单击login时,auth指令应该自动将模板更改为“logout.html”,然后当单击logout时,切换为使用“login.html”。 但到目前为止,我应该手动刷新页面以指示切换模板

如何实现此目的?

使用路由

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        .when('/login', {
            templateUrl: 'login.html',
            controller: 'loginCtrl'
        })
        .when('/logout', {
            templateUrl: 'logout.html',
            controller: 'logoutCtrl'
        })
}]);
然后执行$location.path('/logout')或$location.path('/login')

以下是教程: 使用路由

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        .when('/login', {
            templateUrl: 'login.html',
            controller: 'loginCtrl'
        })
        .when('/logout', {
            templateUrl: 'logout.html',
            controller: 'logoutCtrl'
        })
}]);
然后执行$location.path('/logout')或$location.path('/login')

以下是教程:

我已经修复了您的plunker中的几个bug。看看

您的主要错误是$watch表达式。它应该是
scope.$watch('authed',function(){})
not
scope.$watch(scope.authed,函数(){})


我也玩了一点,想出了一个好主意。其想法是将登录/注销逻辑与cookie操作分离,并摆脱显式DOM操作、$compile()等。

我已经修复了plunker中的几个错误。看看

您的主要错误是$watch表达式。它应该是
scope.$watch('authed',function(){})
not
scope.$watch(scope.authed,函数(){})


我也玩了一点,想出了一个好主意。我们的想法是将登录/注销逻辑与cookie操作分离,并摆脱显式的DOM操作、$compile()等。

为了清晰起见,您应该将
$locationProvider
作为依赖项删除,因为它没有在您提供的示例中使用。您好,感谢您的回答。我知道我可以通过这种方式更改模板。但我正在考虑是否可以使用一个指令来实现这一点。无论如何,这是一个好方法。感谢为清晰起见,您应该将
$locationProvider
作为依赖项删除,因为您提供的示例中没有使用它。您好,谢谢您的回答。我知道我可以通过这种方式更改模板。但我正在考虑是否可以使用一个指令来实现这一点。无论如何,这是一个好方法。谢谢,仅仅使用一个指令不可能实现这一点吗?使用two指令将生成两个代码段,而不是每种情况都需要其中一个。谢谢:)谢谢。为什么您使用两个指令给出一个版本,而您修复的我的版本只能使用一个指令。使用两个指令是否更好?没有“更好”的方法。你可以使用,甚至可以。这实际上取决于每个功能的复杂程度。如果某件事情变得太复杂,您必须开始将其分解为更小的部分(例如,单独的登录和注销指令)。我反对您最初的实现是使用jQuery。嗯,这是不必要的,比它应该做的还要复杂。谢谢。你的回答很好。抱歉,无法为您投票。仅使用一个指令是否不可能实现此目标?使用two指令将生成两个代码段,而不是每种情况都需要其中一个。谢谢:)谢谢。为什么您使用两个指令给出一个版本,而您修复的我的版本只能使用一个指令。使用两个指令是否更好?没有“更好”的方法。你可以使用,甚至可以。这实际上取决于每个功能的复杂程度。如果某件事情变得太复杂,您必须开始将其分解为更小的部分(例如,单独的登录和注销指令)。我反对您最初的实现是使用jQuery。嗯,这是不必要的,比它应该做的还要复杂。谢谢。你的回答很好。对不起,我不能投你一票。