iT邦幫忙

1

AngularjJS的controller無法改變內容

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.staticfile.org/angular.js/1.7.0/angular.min.js"></script>
<script src="https://cdn.staticfile.org/angular.js/1.7.0/angular-route.min.js"></script>
<script type="text/javascript">
angular.module('ngRouteExample', ['ngRoute'])
.controller('HomeController', function ($scope, $route) { $scope.$route = $route;$scope.a=false;})
.controller('AboutController', function ($scope, $route) { $scope.$route = $route;$scope.a=true;})
.config(function ($routeProvider) {
    $routeProvider.
    when('/home', {
        templateUrl: 'embedded.home.html',
        controller: 'HomeController'
    }).
    when('/about', {
        templateUrl: 'embedded.about.html',
        controller: 'AboutController'
    }).
    otherwise({
        redirectTo: '/home'
    });
});
</script>

  
</head>

<body ng-app="ngRouteExample" class="ng-scope">
  <script type="text/ng-template" id="embedded.home.html">
      <h1> Home </h1>
  </script>

  <script type="text/ng-template" id="embedded.about.html">
      <h1> About </h1>
  </script>

  <div ng-init="a=true"> 
    <div id="navigation">  
      <a href="#!/home">Home</a>
      <a href="#!/about">About</a>
    </div>
	  <span ng-show="a">{{a}}</span>
    <div ng-view="">
    </div>
  </div>
</body>
</html>

a完全沒有被動到....

1 個回答

0
dragonH
iT邦超人 5 級 ‧ 2019-10-11 18:01:32
最佳解答
<p><a href="#!addStudent">Add Student</a></p>
<p><a href="#!viewStudents">View Students</a></p>

Codepen

參考

看更多先前的回應...收起先前的回應...

剛剛我放錯程式
現在才是我要問的XDDDDD

dragonH iT邦超人 5 級 ‧ 2019-10-11 18:39:52 檢舉

dannyball710

難怪回來看怎麼發現不一樣

阿 code 看起來沒問題呀

route 也能正常切換

不然你預設 a 會是什麼結果?

點home時a會變成false,<span ng-show="a">{{a}}</span>會隱藏
點About時a會變成true,<span ng-show="a">{{a}}</span>會顯示
controller有被呼叫到,但是a根本沒動...

dragonH iT邦超人 5 級 ‧ 2019-10-11 19:33:39 檢舉

dannyball710

雖然我沒那麼熟 angular

不過你的 code 看不出來有對 route 切換

或者 home/about 被點擊時

a 有任何的操作

所以 a 沒動也是很正常的

codepen

這個範例給你參考

可是這是用ng-click達成的,在HomeController時有變動到a,在HomeController裡的console.log有跑資料出來,代表有呼叫到

dragonH iT邦超人 5 級 ‧ 2019-10-11 19:59:45 檢舉

dannyball710

喔喔

我漏看了你後面的那部分

但是你確定 controller 可以共用 變數嗎

也就是你

ng-inita

跟你 homeabout

a

是同一個東西嗎

因為我在你的

$scope.a=true;

$scope 印出來

a 都是不存在的

copden

controller share variables 參考

這就是我想問的東西...

dragonH iT邦超人 5 級 ‧ 2019-10-11 20:39:33 檢舉

對阿

所以依照我上面說的

你認為的 a 有變動

實際上都只是在變動

home 的 a

about a

<span ng-show="a">{{a}}</span>

的 a

永遠都是你

ng-init="a=true"

所設定的 true

至於 controller 如何共用 variable

你可以參考上面我貼的那個

我要發表回答

立即登入回答