Angularjs:为什么范围的父母是必要的?

时间:2013-07-05 10:48:31

标签: 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 个答案:

答案 0 :(得分:1)

这与UI Bootstrap无关。这是因为正常的javascript原型行为而发生的。如果使用原始类型,则必须使用$ parent,否则如果切换到对象语法而不需要使用$ parent,请参阅下面的示例代码

$ scope.exchange = {name:null};

然后html应该是ng-model =“exchange.name”(如果你想要对象而不是原语,则不需要使用父级)

网址应详细解释您的所有内容https://github.com/angular/angular.js/wiki/Understanding-Scopes