【问题标题】:Angularjs - ng-model with array with dynamic sizeAngularjs - 具有动态大小的数组的 ng-model
【发布时间】:2014-12-17 21:12:47
【问题描述】:

这是我的场景,

查看:

<div data-ng-controller="MyModuleController">
   <div ng-repeat="a in range() track by $index" >
      <ty-project idx="$index+1" ng-model="projects[$index]" ></ty-project>
   </div>
</div>

控制器:

$scope.projects= [];

$scope.range = function() {
    // return some random number - it does not really matter for the purpose
};

ty-project 只是一个指令

angular.module('mymodule').directive('tyProject', [
     function() {
         return {
            templateUrl: 'modules/mymodule/directives/typrojectTemplate.html',
             restrict: 'E',
             scope: {
                   idx: '='
             },
             link: function postLink(scope, element, attrs) {
             }
       };
    }
]); 

typrojectTemplate 是一个带有 2 个输入的简单模板,如下所示:

  <div>
      <label>Project_{{idx}} name</label>
      <input type="text" name="project.name" ng-model="project.name"/>
  </div>
  <div >
     <label >Project_{{idx}} total </label>
     <input type="number" name="project.total" ng-model="project.total" />
 </div>

这是我的控制器

angular.module('mymodule').controller('MyModuleController', ['$scope', 
    function($scope) {

       $scope.projects: [] ;

        $scope.save = function() {

            console.log(projects);
        };

        $scope.range = function() {
            var n= 2;// todo: return random number..
            return new Array(n);
        };
    }
]);

所以如果 range 方法返回 2 将有 2 个项目对象 每个项目都有名称和总属性。

如何将项目绑定到控制器?

谢谢。

【问题讨论】:

    标签: arrays angularjs data-binding angularjs-ng-repeat angularjs-ng-model


    【解决方案1】:

    你必须将范围从控制器传递给指令。该指令将此范围传递给模板。

    你可以在你的指令中这样做:

    scope:{
           project: '=ngModel'//will pass it to the Template.
           idx: '=' //
    }
    

    我不知道,你是否将控制器分配给视图。

    【讨论】:

    • 感谢您的建议,但没有帮助。请参阅我上次更新的问题。
    • 您是否将控制器添加到视图中?你能显示控制器代码吗
    • 您是否添加了项目:'=ngModel'? ,你也在视图中做了 ng-controller="MyModulecontroller"?- 只是想确定一下。你的项目有一些带有名称和总数的对象?那么它应该可以工作
    • 谢谢,成功了!!你是最棒的!!我刚刚错过了这个项目:'=ngModel'
    • 没问题 :) 不客气。我说它必须工作哈哈:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2019-03-24
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多