AngularJS:观察父范围的属性

时间:2015-01-13 20:05:34

标签: javascript json angularjs

我对AngularJS很陌生,我试图了解一些事情。 首先,我有我的控制器,我将在这里放置一个片段:

var OfficeUIRibbon = angular.module('OfficeUIRibbon');

// Defines the OfficeUIRibbon controller for the application.
OfficeUIRibbon.controller('OfficeUIRibbon', ['$scope', '$http', function($scope, $http) {
    var ribbon = this;

    ribbon.setApplicationMenuAsActive = function() {
        ribbon.applicationMenuActive = true;
    }
}

然后我有一个指令:

var OfficeUIRibbon = angular.module('OfficeUIRibbon');

OfficeUIRibbon.directive('ribbonApplicationMenu', function() {
    return {
        restrict: 'E',
        replace: false,
        scope: {
            data: '@'
        },
        templateUrl: function(element, attributes) {
            return attributes.templateurl;
        }
    }
});

该指令的调用如下:

<ribbon-application-menu templateUrl="/OfficeUI.Beta/Resources/Templates/ApplicationMenu.html"     data="/OfficeUI.Beta/Resources/JSon/Ribbon/ribbon.json"></ribbon-application-menu>

这一切都有效,在我的指令模板中,放置了以下内容:

<div id="application" id="applicationMenuHolder" ng-controller="OfficeUIRibbon as OfficeUIRibbon" ng-show="OfficeUIRibbon.applicationMenuActive"...

从另一个元素内部,当我执行一次单击时,我的控制器上的一个函数被执行:

ng-click="OfficeUIRibbon.setApplicationMenuAsActive()"

这是来自另一个元素的指令:

OfficeUIRibbon.directive('ribbon', function() {
    return {
        restrict: 'E',
        replace: false,
        scope: {
            data: '@'
        },
        templateUrl: function(element, attributes) {
            return attributes.templateurl;
        }
    }
});

此功能确实改变了属性&#34; applicationMenuActive&#34;在功能区本身上,应该使指令模板中的项目显示出来。

但是,这不起作用。我猜我需要看这个属性,以便视图得到相应的更新。

任何人都知道如何做到这一点?

0 个答案:

没有答案