angularjs – 如何将NgModelController传递给指令控制器?

可以将NgModelController传递给指令控制器吗?这是必需的,所以我可以分配值到控制器中的模型.

此示例不起作用:

angular
     .module('directives.selectBox',[])
     .directive('selectBox',selectBox);  

    function selectBox() {
        return {
          restrict   : 'E',require    : 'ngModel',scope      : {
             list     : '=',},replace     : true,templateUrl : 'common/directives/selectBox/selectBox.html',controller :  SelectBoxController,};
    }  
    function SelectBoxController(ngModel) {
       ngModel.$setViewValue(10); // ???
    }
实际上很简单,你需要做的是通过将$元素注入到控制器中,然后调用.controller()函数来访问元素.
angular
   .module('directives.selectBox',[])
   .directive('selectBox',selectBox);  

function selectBox() {
    return {
      restrict   : 'E',scope      : {
         list     : '=',};
}  
function SelectBoxController($element) {
   var ngModel = $element.controller('ngModel');
   ngModel.$setViewValue(10); // ???
}

角度1.5更新

请注意,在AngularJS 1.5中,除了现有的directive()函数之外,还添加了新的component()函数.此功能将配置对象作为第二个参数,允许您直接指定所需的控制器,然后将其绑定到组件的控制器.

下面是同一个例子,但是作为组件.

angular
   .module('directives.selectBox',[])
   .component('selectBox',{
            controller: SelectBoxController,controllerAs: 'vm',bindings: {
                list: '=' // though '<' would be better
            },require: {
                ngModel: '='
            },// replace: true ==> No longer possible with component
        }
    );  

function SelectBoxController($element) {

    $onInit() {
        // This function is called automatically whenever the controller is ready
        this.ngModel.$setViewValue(10); // ???
    }
}

我希望我键入它可以,这个小文本区域几乎不是一个IDE

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...