Javascript 未更新ngDialog作用域变量

Javascript 未更新ngDialog作用域变量,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我对AngularJs和ngDialog都是新手,在ngDialog模式和我的控制器之间进行绑定时遇到了麻烦。我通过指定{scope:$scope}将控制器的作用域注入到模式中,并且我可以访问控制器中定义的方法,但是与控制器中定义的模型的绑定不能正常工作 我试图使用一个模式来允许用户向组织添加地址 这里是main.js angular.module('wizardApp') .controller('MainCtrl', ['$scope', 'ngDialog', MainCtrl]);

我对AngularJs和ngDialog都是新手,在ngDialog模式和我的控制器之间进行绑定时遇到了麻烦。我通过指定{scope:$scope}将控制器的作用域注入到模式中,并且我可以访问控制器中定义的方法,但是与控制器中定义的模型的绑定不能正常工作

我试图使用一个模式来允许用户向组织添加地址

这里是main.js

angular.module('wizardApp')
  .controller('MainCtrl', ['$scope', 'ngDialog', MainCtrl]);

function MainCtrl($scope, ngDialog) {
  $scope.hide_wizard_button = false;
  $scope.open_wizard = function () {
    $scope.hide_wizard_button = true;
    ngDialog.open({
      template: 'wizard',
      controller: 'wizardCtrl',
      scope: $scope
   })
 }
}

angular.module('wizardApp')
    .controller('wizardCtrl', ['$scope', wizardCtrl]);
function wizardCtrl($scope){
  $scope.step = 1;
  $scope.name = null;
  $scope.phone_number = null;
  $scope.email_address = null;
  $scope.password = null;
  $scope.step_forward = function(){
    if ($scope.step === 1){
      if(validate_name($scope.name) &&     validate_phone_number($scope.phone_number) && validate_address($scope.address)){
        $scope.step++;
      }
    }
    if ($scope.step == 2){
       if(validate_email($scope.email_address) &&   validate_password($scope.password)){
        $scope.step++;
      }
    }
  };
以下是我的ng模板:

<script type="text/ng-template" id="wizard">
  <form id="msform">
    <!-- progressbar -->
    <ul id="progressbar">
      <li ng-class="{true: 'active'}[step==1]">Personal Details</li>
      <li ng-class="{true: 'active'}[step==2]">Social Profiles</li>
      <li ng-class="{true: 'active'}[step==3]">Personal Details</li>
    </ul>
    <!-- fieldsets -->
    <fieldset ng-if="step == 1">
      <h2 class="fs-title">Enter Your personal Details</h2>

      <h3 class="fs-subtitle">This is step 1</h3>
      <input type="text" placeholder="Name" ng-model="name"/>
      <input type="text" placeholder="Phone Number" ng-model="phone_number"/>
      <input type="text" placeholder="Address" ng-model="address"/>
      <input type="button" class="next action-button" value="Next" ng-click="step_forward()"/>
    </fieldset>
    <fieldset ng-if="step == 2">
      <h2 class="fs-title">Email Verification</h2>

      <h3 class="fs-subtitle">Your Email Address and password</h3>
      <input type="text" name="email" placeholder="Email Address"/>
      <input type="password" name="password" placeholder="Password"/>
      <input type="button" name="previous" class="previous action-button" value="Previous" ng-click="step_back()"/>
      <input type="button" name="next" class="next action-button" value="Next" ng-click="step_forward()"/>
    </fieldset>
    <fieldset ng-if="step == 3">
      <h2 class="fs-title">Thank You for signing up!</h2>
    </fieldset>
  </form>
</script>

    个人详细信息 社交档案 个人详细信息
输入您的个人详细信息 这是第一步 电子邮件验证 您的电子邮件地址和密码 谢谢你的注册!

错误为不能读取null属性,这意味着$scope.name没有得到更新。

问题似乎与模板中的
ng if
指令有关<如果创建新的子作用域,则代码>ng

新作用域继承其父级的属性(通过原型继承)。当您将模型值存储在基本体(字符串、数字、布尔值)中而不是对象中时,就会出现这样的问题

由于原型继承,子作用域中继承的字符串值将覆盖父作用域中的值。例如,您更改了子项中的值,但父项没有注意到

这就是为什么Angular开发者建议您“在模型中添加一个点”。将模型存储在一个对象中,该对象可以经受原型继承

因此,创建一个包含所有模型值(在HTML中绑定到)的对象:

然后使用
ng model
(使用点!)绑定到它们:


有关血淋淋的详细信息,请阅读中的精彩解释。

问题似乎与模板中的
ng if
指令有关<如果创建新的子作用域,则代码>ng

新作用域继承其父级的属性(通过原型继承)。当您将模型值存储在基本体(字符串、数字、布尔值)中而不是对象中时,就会出现这样的问题

由于原型继承,子作用域中继承的字符串值将覆盖父作用域中的值。例如,您更改了子项中的值,但父项没有注意到

这就是为什么Angular开发者建议您“在模型中添加一个点”。将模型存储在一个对象中,该对象可以经受原型继承

因此,创建一个包含所有模型值(在HTML中绑定到)的对象:

然后使用
ng model
(使用点!)绑定到它们:


有关血淋淋的详细信息,请阅读中的精彩解释。

问题似乎与模板中的
ng if
指令有关<如果创建新的子作用域,则代码>ng

新作用域继承其父级的属性(通过原型继承)。当您将模型值存储在基本体(字符串、数字、布尔值)中而不是对象中时,就会出现这样的问题

由于原型继承,子作用域中继承的字符串值将覆盖父作用域中的值。例如,您更改了子项中的值,但父项没有注意到

这就是为什么Angular开发者建议您“在模型中添加一个点”。将模型存储在一个对象中,该对象可以经受原型继承

因此,创建一个包含所有模型值(在HTML中绑定到)的对象:

然后使用
ng model
(使用点!)绑定到它们:


有关血淋淋的详细信息,请阅读中的精彩解释。

问题似乎与模板中的
ng if
指令有关<如果创建新的子作用域,则代码>ng

新作用域继承其父级的属性(通过原型继承)。当您将模型值存储在基本体(字符串、数字、布尔值)中而不是对象中时,就会出现这样的问题

由于原型继承,子作用域中继承的字符串值将覆盖父作用域中的值。例如,您更改了子项中的值,但父项没有注意到

这就是为什么Angular开发者建议您“在模型中添加一个点”。将模型存储在一个对象中,该对象可以经受原型继承

因此,创建一个包含所有模型值(在HTML中绑定到)的对象:

然后使用
ng model
(使用点!)绑定到它们:


请阅读中关于血淋淋的详细信息的精彩解释。

在哪一行出现“无法读取null属性”错误?您将名称设置为null,从何处获取新值(从用户输入)?如果新值来自用户输入,则错误是在用户开始键入之前还是之后发生的?当我执行
$scope.name.length
时,错误出现在
validate\u name
方法中,当单击“下一步”按钮且用户已在文本框中键入名称时发生。您在哪一行获得该错误“无法读取null属性”错误?您将名称设置为null,从何处获取新值(从用户输入)?如果新值来自用户输入,则错误是在用户开始键入之前还是之后发生的?当我执行
$scope.name.length
时,错误出现在
validate\u name
方法中,当单击“下一步”按钮且用户已在文本框中键入名称时发生。您在哪一行上获得该错误?”无法读取null的属性“错误”?已将名称设置为n
$scope.step1Data = { name: null, phone: null }; // etc.
ng-model="step1Data.name"