Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有独立作用域的指令中的表单输入:如何将ngModel设置为正确的作用域?_Javascript_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Javascript 具有独立作用域的指令中的表单输入:如何将ngModel设置为正确的作用域?

Javascript 具有独立作用域的指令中的表单输入:如何将ngModel设置为正确的作用域?,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我尝试显示一个不同问题的列表。每个问题都有自己的形式输入。所以我写了一个指令来设置这些表单输入。但是在input标记中设置ngModel不会更新隔离范围 我目前尝试的是: <body ng-app="stepModule" ng-controller="ChallengeCtrl"> <div question step="step"></div> </body> 而JS: angular.module('stepModule', [])

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

我目前尝试的是:

<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);
        };
      }
    ]
  };
});
angular.module('stepModule',[])
.指令('问题',函数(){
返回{
限制:“A”,
替换:正确,
范围:{
步骤:'='
},
模板:“\n”
步骤={{Step}}}\n
问题\n
\n
答复\n
\n
\n
",
控制器:[
“$scope”、“$element”、“$attrs”、函数($scope、$element、$attrs){
$scope.submit=函数(){
log($scope.step.question);
log($scope.step.answer);
};
}
]
};
});
此处
console.log
将输出
$scope.step
的原始内容,而不是新值。表现出那种行为


有没有办法让
ngModel
使用指令范围?或者我只是遗漏了什么/滥用了AngularJS(这一点我一点也不会感到惊讶…)

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

@andreas。为什么不在模板的开头和结尾使用单引号呢。那么你就不必逃避双引号了。