1

好的,这是一个令人费解的问题,我可能会要求一种不好的方法。如果是这种情况,请告诉我。

所以我有directive一个导航栏。当有人点击某物时,我设法获得添加类的指令,从而加载栏。感谢 StackOverflow

但是现在,我有一个获取和设置值的服务。当服务中的值发生更改时,我想在视图中反映这一点。这样的事情可能吗?

编辑 为澄清起见,如果我确实使用 a $apply(function()....,我该怎么做?我的观点是这样的。我的视图不受任何特定控制器或范围的约束。不确定是否应该。但这是我的观点的片段:

    <p>
        Are you sure you change that song,
        <br />
  {{ songs[0].title }}
    </p>

这是我的指令:

angular.module('MyApp')
  .directive('navbar', function () {
    return {
      restrict: 'A',
      templateUrl : '/views/partials/nav.html',
      controller: function ($scope, ModalService) {
        $scope.ms = ModalService;
        $scope.songs = {};

        $scope.$watch('ms.songs', function(newVal, oldVal) {
          if(newVal != null) {
            $scope.$apply(function() {
              $scope.songs = newVal;
            });
          }
        });
          },
4

2 回答 2

1

你试过这个吗?

angular.module('MyApp')
  .directive('navbar', function () {
    return {
      restrict: 'A',
      templateUrl : '/views/partials/nav.html',
      controller: function ($scope, ModalService) {
        $scope.songs = ModalService.songs;
      }
  });
于 2013-09-26T15:25:17.437 回答
0

我最近确实遇到了一个场景,我必须在指令中的服务属性上设置监视,解决方案是在链接函数中设置监视,类似于:

link: function(scope, element, attrs) {
    // other link code
    scope.$watch(function() { return svc.property; }, function(data) {
        // do something here
    });
    // other link code
}
于 2013-09-26T14:53:18.203 回答