2013-07-05 25 views
0

控制器:Angularjs:爲什麼父母的範圍是必要的?

'use strict' 

angular.module('browse', []) 

    .controller('browseCtrl', ['$scope', 'exchangesFctr', function($scope, exchangesFctr) { 

     // exchanges 
     $scope.exchanges = exchangesFctr.get(); 
     $scope.exchange = null; 
     $scope.$watch('exchange', function() { 
      console.info('EXCHANGE', $scope.exchange); 
     }); 

     // sectors 
     $scope.sector = null; 
    }]); 

交流部分:

<div class="btn-group" ng-controller="browseCtrl"> 
    <button type="button" class="btn" btn-radio="exchange" ng-model="$parent.exchange" 
      ng-repeat="exchange in exchanges | orderBy:exchange.name">{{ exchange.name }}</button> 
</div> 
    <ng-include src="'browse/sectors.html'" /> 

扇區部分:

<div class="btn-group" ng-controller="browseCtrl" ng-hide="$parent.exchange == null"> 
    <p>todo</p> 
</div> 

1)使用ui.bootstrap:爲什麼上局部的交流是需要將NG-模型綁定到父母上班?我預計這是ng-model="exchange"?我在這裏做錯了什麼?

2)在扇區部分,ng-hide只執行一次。我期望在更改$scope.exchange時更新表達式。我必須使用什麼表達方式才能始終保持最新狀態?

回答

1

這與UI Bootstrap無關。這是由於正常的JavaScript原型行爲發生的。如果使用原始類型,則必須使用$ parent,否則,如果切換到對象語法而不需要使用$ parent,請參閱下面的示例代碼

$ scope.exchange = {name:null};

然後將HTML應該NG-模型=「exchange.name」(沒有必要,如果你想上的對象,而不是原語使用父)

的網址應說明你的一切詳細https://github.com/angular/angular.js/wiki/Understanding-Scopes

+0

謝謝;任何關於ng-hide綁定的建議? – Tjorriemorrie

+0

你對ng-hide的表達似乎很好,我沒有看到這個 –

+0

中的任何問題爲什麼'$ parent'然後在按鈕radiomodel示例中使用? http://angular-ui.github.io/bootstrap/#/buttons – Tjorriemorrie

相關問題