2017-06-21 106 views
-1

所以我包括blog.html這是一個帖子列表,但當我嘗試更改blog.html中的活動變量似乎範圍已更改?範圍內更改包括html

當我點擊其中一個帖子時,測試點A將保持不變,但測試點B會改變。

發生了什麼事?我怎樣才能使它工作?

的index.html

<body ng-app="myApp" ng-controller="myController"> 
    <nav id="mainNav"> 
     <ul> 
      <li><a ng-click="active = 'views/blog.html'">Blog</a></li> 
      <li><a ng-click="active = 'views/about.html'">About</a></li> 
      <li><a ng-click="active = 'views/controlPanel.html'">Control Panel</a></li> 
     </ul> 
    </nav> 
    <div> 
     <div ng-include="active"></div> 
    </div> 
    {{active}} //Testing point A 
</body> 

blog.html

<ul id="posts"> 
    <li class="post" ng-repeat="post in posts"> 
     {{active}} //Testing point A 
     <a ng-click="active = 'views/about.html'"> 
      <img src="{{post.image}}" /> 
      <div class="text"> 
       <h2>{{post.title}}</h2> 
       <p class="date">{{post.date}}</p> 
      </div> 
     </a> 
    </li> 
</ul> 

的script.js

angular.module('myApp', []).controller('myController', function ($scope, $http) { 
    $scope.active = 'views/blog.html'; 
    $http.get("data.json").then(function (response) { 
     $scope.posts = response.data.posts; 
    }); 
}); 
+0

'ng-include'是一個有自己範圍的指令。您需要創建一個組件或指令 – Hoyen

+0

@Hoyen,如果您使用angularjs <1.6,則需要使用組件。在您的控制器和您的組件之間共享您的數據。 – nevradub

回答

0

回答你的問題是以及解決方案在這裏詳細闡述:Angular passing scope to ng-include

雖然,我不明白的一個想法是,你爲什麼要點擊某些職位後將用戶帶到「about.html」頁面。您應該爲單個帖子分開發布博文頁面。像「post.html」。這個模板應該包含在「blog.html」中。