1

我尝试显示不同问题的列表。每个问题都有自己的表单输入。所以我写了一个指令来设置这些表单输入。但是标签ngModel中的设置input不会更新隔离范围。

我目前尝试过的:

<body ng-app="stepModule" ng-controller="ChallengeCtrl">
  <div question step="step"></div>
</body>

和 JS:

angular.module('stepModule', [])
.directive('question', function() {
  return {
    restrict: 'A',
    replace: true,
    scope: {
      step: '='
    },
    template: "<form ng-submit=\"submit()\">\n  
               Step = {{step}}\n
               <label for=\"question\">Question</label>\n  
               <input ngModel=\"step.question\" ng-required=\"true\" name=\"question\" />\n
               <label for=\"answer\">Answer</label>\n  
               <input ngModel=\"step.answer\" ng-required=\"true\" name=\"answer\" />\n
               <input type=\"submit\" value=\"Save (extract out, should save automatically)\" />\n
               </form>",
    controller: [
      "$scope", "$element", "$attrs", function($scope, $element, $attrs) {
        $scope.submit = function() {
          console.log($scope.step.question);
          console.log($scope.step.answer);
        };
      }
    ]
  };
});

这里console.log将输出原始内容$scope.step而不是新值。这是一个表现出这种行为的 Plunker 。

有没有办法ngModel使用指令范围?或者我只是错过了什么/滥用AngularJS(这不会让我感到惊讶......)

4

1 回答 1

2

ngModel 的属性语法是ng-model,即ng-model=\"step.answer\"

于 2013-07-25T09:55:22.043 回答