不期望Angular指令行为

时间:2016-10-18 06:39:24

标签: angularjs angularjs-directive

我有这个指令`

var xmlToHtml = function () {
    return {
        restrict: "A",
        templateUrl: 'Components/XML2Html/views/XML2Html.html',
        controllerAs: 'XmlToHtmlController',
        bindToController: true,
        scope: {
            xslt: '@',
            administrator: '='
        },
        link: function () {
        },
        controller: function ($scope, $timeout, $sce, $http, $filter, $timeout, $window) {
            $scope.administrator = this.administrator;
            $scope.$watch('administrator', function (newVal, oldVal) {
                console.log($scope.administrator);
            }, true);
        },
    };
}
xmlToHtml.$inject = [];

和我的HTML

 <div xml-to-html xslt="test.xslt" administrator="Agent.Administrator"></div>

范围Agent.Administrator是布尔值。并且在指令之外更改值,所以我想要两种方式绑定。

问题是不行,如果bool管理员改变值,指令一无所知!但奇怪的是,如果我更换“Agent.Administrator”&#39;与代理商&#39; (所有对象,而不仅仅是一个标志)工作完美,并抓住任何标志的变化&#39;管理员&#39;。

boolean in指令有什么不同的方法吗? 这里奇怪的是,如果我只通过旗帜,指令不知道任何改变,但如果我通过所有对象,指令知道任何改变。

2 个答案:

答案 0 :(得分:1)

这是因为Behat是原始类型,因此当您传递boolean时,它会复制该值并且您有一个新项目。您可以传递具有该布尔值属性的对象boolean,例如

Administrator

答案 1 :(得分:0)

你可以简单地把

 Agent.Administrator=true;