2016-05-18 5 views
0

コントローラに変数があり、後でボタンをクリックすると値を割り当てたいと思っています。すなわち変数をインスタンス化して後で値に値を割り当てることはできますか?

var app = angular.module('myApp', ['ngRoute']);  

.... 

var userArray = [ 
    {name: "John", age: 25}, {name: "Jim", age: 30} 
]; 

app.controller('Page2Controller', function($scope) { 
    $scope.message = 'Look! I am from page 2.'; 
    $scope.newArray = []; 

    $scope.addUsers = function(){ 
     scope.newArray = userArray; 

     console.log($scope.newArray); 
    } 
} 

app.config(function($routeProvider) { 
    $routeProvider 

    .when('/page2', { 
     templateUrl : 'pages/page2.html', 
     controller : 'Page2Controller' 

    ... 

page2.html

<div> 
    <p>{{ message }}</p> 

    <ul> 
     <li ng-repeat="user in Page2Controller.newArray">{{user.name}}</li> 
    </ul> 
</div> 

index.htmlを

<body ng-controller="MainController"> 
    <div id="sideMenu"> 
     <h2>Campaign</h2> 

     <ul> 
      <li><a href="#">Home</a></li> 
      <li><a href="#page2">Page 2</a></li> 
      <li><a href="#page3">Page 3</a></li> 
      <li><a href="#page4">Page 4</a></li> 
     </ul> 
    </div> 

    <div ng-view></div> 
</body> 

の$ scope.userが「NGコンソールではなく、HTMLページに表示されている理由を私は理解していません-repeat "はユーザーを表示しません。 ng-repeatが動的に追加されたデータを表示できないことがありますか?

誰かが私を助けることができますか?それを感謝します。

+2

あなたはこれを持っています: 'scope.newArray = userArray;'と '$'記号 '$ scope.newArray = userArray;を追加する方が良いと思います。 – MysterX

答えて

1

私はngRouteを実装していなかったとして、私はあなたのコントローラを静的に使用している

var app = angular.module('myApp', []);  
var userArray = [{name: "John", age: 25}, {name: "Jim", age: 30}]; 
app.controller('Page2Controller', function($scope) { 
    $scope.message = 'Look! I am from page 2.'; 
    // $scope.newArray = []; 
    $scope.addUsers = function(){ 
     $scope.newArray = userArray; 
     console.log($scope.newArray); 
    } 
    $scope.addUsers(); 
}); 

とhtml

<div ng-controller="Page2Controller"> 
         <p>{{ message }}</p> 

         <ul> 
          <li ng-repeat="user in newArray">{{user.name}}</li> 
         </ul> 
        </div> 

..私は推測し、その関数を呼び出したことはありません。すべての

+0

こんにちは、ありがとうございます。それは正しい答えを示唆した。 ng-repeat = "user in Page2Controller.newArray"の代わりに、ng-repeat = "newArrayのユーザー"を実行しています。 – Octtavius

+0

私の答えを正しいものとしてマークすると良いでしょう。 –

1

はに切り替えてみてください:

<li ng-repeat="user in scope.newArray">{{user.name}}</li> 

私は 'Page2Controller' はテンプレートコンテキストで知られているとは思いません。

0

まず、あなたはその後、コントローラ のように、あなたが望むものを割り当てる必要があり、そのようなあなたのコントローラで次に

<button type="button" ng-click="asigningValue()"></button> 

としてクリックする必要がありますあなたが必要としているNGクリックderectiveを必要としていあなたはディレクティブに値を割り当てるバインドするなど

app.controller('Page2Controller', function($scope) { 
$scope.asigningValue=function(){ 
    $scope.message = 'Look! I am from page 2.'; 
    } 
} 

その後

<p ng-bind-html="message"></p> 
として、データバインディングを使用してディレクティブを使用して示し、

希望すると便利です!

ありがとうございました!

関連する問題