Angularjs 从控制器获取指令的值

Angularjs 从控制器获取指令的值,angularjs,Angularjs,我是AngularJs的新手,我正在尝试从我的控制器访问处于活动状态的“数据页”的值(寻呼机由第三方插件生成) 示例:在下面的示例中,我试图得到的是值:3 <ul class="pagination pagination-sm"> <li class="footable-page-arrow"> <a data-page="first" href="#first">«</a> </li> <

我是AngularJs的新手,我正在尝试从我的控制器访问处于活动状态的“数据页”的值(寻呼机由第三方插件生成) 示例:在下面的示例中,我试图得到的是值:3

  <ul class="pagination pagination-sm">
    <li class="footable-page-arrow">
       <a data-page="first" href="#first">«</a>
    </li>
    <li class="footable-page active">
       <a data-page="3" href="#">4</a>
    </li>
    <li class="footable-page">
       <a data-page="0" href="#">1</a>
    </li>
    ...
    ...
  </ul>
我在控制器中添加了一个警报,只是为了知道里面有什么:

  $scope.fooFunc= function(){ 
     alert($scope.page); /*I supposed the value is now 
                           avelaible in the controller scope, still get **undefined** */
  }

这是非常不规则的,因为控制器不应该关心DOM。在许多事情中,此规则有助于保持控制器的可测试性

一旦你开始关注DOM,你就会进入Angular的

使用指令方法,我们可以通过以下方式将
数据页
属性分配给我们的控制器
范围

app.directive('page', function pageDirective() {

    return {
        restrict: 'A',
        link: function link(scope, element, attributes) {
            scope.page = attributes.page;
        }
    }

});
由于
范围
将与控制器的范围隐式相同,因此对指令内
范围
变量执行的任何操作都将反映在控制器上–只要指令在控制器范围内–
ng控制器


通过指定
scope:true
,您将为指令创建一个新的作用域,该指令可以从原型链访问控制器的作用域,或者使用
scope.$parent
。我们还有
作用域:{}
,它创建了一个孤立的作用域,是一个完全不同的领域。

这是非常不规则的,因为控制器不应该关心DOM。在许多事情中,此规则有助于保持控制器的可测试性

一旦你开始关注DOM,你就会进入Angular的

使用指令方法,我们可以通过以下方式将
数据页
属性分配给我们的控制器
范围

app.directive('page', function pageDirective() {

    return {
        restrict: 'A',
        link: function link(scope, element, attributes) {
            scope.page = attributes.page;
        }
    }

});
由于
范围
将与控制器的范围隐式相同,因此对指令内
范围
变量执行的任何操作都将反映在控制器上–只要指令在控制器范围内–
ng控制器


通过指定
scope:true
,您将为指令创建一个新的作用域,该指令可以从原型链访问控制器的作用域,或者使用
scope.$parent
。我们还有
作用域:{}
,它创建了一个孤立的作用域,是一个完全不同的领域。

这是非常不规则的,因为控制器不应该关心DOM。在许多事情中,此规则有助于保持控制器的可测试性

一旦你开始关注DOM,你就会进入Angular的

使用指令方法,我们可以通过以下方式将
数据页
属性分配给我们的控制器
范围

app.directive('page', function pageDirective() {

    return {
        restrict: 'A',
        link: function link(scope, element, attributes) {
            scope.page = attributes.page;
        }
    }

});
由于
范围
将与控制器的范围隐式相同,因此对指令内
范围
变量执行的任何操作都将反映在控制器上–只要指令在控制器范围内–
ng控制器


通过指定
scope:true
,您将为指令创建一个新的作用域,该指令可以从原型链访问控制器的作用域,或者使用
scope.$parent
。我们还有
作用域:{}
,它创建了一个孤立的作用域,是一个完全不同的领域。

这是非常不规则的,因为控制器不应该关心DOM。在许多事情中,此规则有助于保持控制器的可测试性

一旦你开始关注DOM,你就会进入Angular的

使用指令方法,我们可以通过以下方式将
数据页
属性分配给我们的控制器
范围

app.directive('page', function pageDirective() {

    return {
        restrict: 'A',
        link: function link(scope, element, attributes) {
            scope.page = attributes.page;
        }
    }

});
由于
范围
将与控制器的范围隐式相同,因此对指令内
范围
变量执行的任何操作都将反映在控制器上–只要指令在控制器范围内–
ng控制器


通过指定
scope:true
,您将为指令创建一个新的作用域,该指令可以从原型链访问控制器的作用域,或者使用
scope.$parent
。我们还有
作用域:{}
,它创建了一个独立的作用域,是一个完全不同的领域。

我建议您始终使用服务/工厂在控制器和指令之间共享数据,并在两侧注入数据

app.factory('SharedService', function() {
  return {
    sharedObject: {
      value: '',
      value2: ''
    }
  };
});

app.controller('FirstCtrl', function($scope, SharedService) {
  $scope.model = SharedService.sharedObject;
});

app.directive('myDirective',['SharedService', function(SharedService){
  return{
    restrict: 'E',
    link: function(scope){
      scope.model = SharedService.sharedObject;
    },
    template: '<div><input type="text" ng-model="model.value"/></div>'
  }
}]);
app.factory('SharedService',function(){
返回{
共享对象:{
值:“”,
值2:“”
}
};
});
app.controller('FirstCtrl',函数($scope,SharedService){
$scope.model=SharedService.sharedObject;
});
应用程序指令('myDirective',['SharedService',函数(SharedService){
返回{
限制:'E',
链接:功能(范围){
scope.model=SharedService.sharedObject;
},
模板:“”
}
}]);
下面是一个plunkr,展示了如何实现:

我建议您始终使用服务/工厂在控制器和指令之间共享数据,并在两侧注入数据

app.factory('SharedService', function() {
  return {
    sharedObject: {
      value: '',
      value2: ''
    }
  };
});

app.controller('FirstCtrl', function($scope, SharedService) {
  $scope.model = SharedService.sharedObject;
});

app.directive('myDirective',['SharedService', function(SharedService){
  return{
    restrict: 'E',
    link: function(scope){
      scope.model = SharedService.sharedObject;
    },
    template: '<div><input type="text" ng-model="model.value"/></div>'
  }
}]);
app.factory('SharedService',function(){
返回{
共享对象:{
值:“”,
值2:“”
}
};
});
app.controller('FirstCtrl',函数($scope,SharedService){
$scope.model=SharedService.sharedObject;
});
应用程序指令('myDirective',['SharedService',函数(SharedService){
返回{
限制:'E',
链接:功能(范围){
scope.model=SharedService.sharedObject;
},
模板:“”
}
}]);
下面是一个plunkr,展示了如何实现:

我建议您始终使用服务/工厂在控制器和指令之间共享数据,并在两侧注入数据

app.factory('SharedService', function() {
  return {
    sharedObject: {
      value: '',
      value2: ''
    }
  };
});

app.controller('FirstCtrl', function($scope, SharedService) {
  $scope.model = SharedService.sharedObject;
});

app.directive('myDirective',['SharedService', function(SharedService){
  return{
    restrict: 'E',
    link: function(scope){
      scope.model = SharedService.sharedObject;
    },
    template: '<div><input type="text" ng-model="model.value"/></div>'
  }
}]);
app.factory('SharedService',function(){
返回{
共享对象:{
值:“”,
值2:“”
}
};
});
app.con