从侧边栏指令监视控制器范围变量

时间:2016-04-15 21:00:06

标签: javascript angularjs angularjs-directive

我的Web应用程序中有一个sidebar directive,其中包含一组绑定到另一个controller中某个模型的值。页面加载时,将正确获取和填充所有值。但是,当从控制器更新模型时,watch中的directive设置不会捕获该事件。

这是我的sidebar html

<div class="navbar-default sidebar" ng-controller="SettingsCtrl" role="navigation">
    <div class="sidebar-nav navbar-collapse">
        <ul class="nav in" id="side-menu" style="padding-left: 8px;">
          <li ng-repeat="profile in profiles">
            <label>
              <input type="radio" ng-model="profile" name="name" value="{{profile.text}}"/>
              {{profile.text}}
            </label>
          </li>
        </ul>
    </div>
</div>

Directive sidebar.js

angular.module('webApp')
  .directive('sidebar',['$location',function(Request) {
    return {
      templateUrl:'scripts/directives/sidebar/sidebar.html',
      restrict: 'E',
      replace: true,
      scope: false,
      link: function(scope, element, attrs){
        scope.$watch('profiles', function(newValue, oldValue){
          console.log(newValue + ' ' + oldValue);
        }, true);
      }
    }
  }]);

这是我的SettingsCrl controller

angular.module('webApp')
  .controller('SettingsCtrl', function($scope) {
    $scope.profiles = [{text: "john"}, {text: "paul"}];
    function someEvent(){
        $scope.profiles.push({text: "hannah"});
    }
});

我试图改为watchCollection,但仍然没有运气..

0 个答案:

没有答案