ng-modelがスコープにバインドできないという問題が発生しています。ng-modelがウィザードアプリケーションのスコープにバインドできません
このWebアプリケーションのセクションは、ウィザードのように3つの手順で設定します。
特定の要件が満たされていない場合、ユーザーが第2ステップに到達しないように、最初の手順で検証を含める必要があります。しかし、これを行うには、firstNameとsecondNameをスコープにバインドするためにng-modelを使用する必要があります。
wizard.html
<div id="wizard-container" ng-controller="WizardCtrl as vm">
<div id="wizard-step-container">
<ul class="nav nav-pills nav-justified">
<li ng-repeat="step in vm.steps" ng-class="{'active':step.step == vm.currentStep}"><a ng-click="vm.gotoStep(step.step)" href="">{{step.step}}. {{step.name}}</a></li>
</ul>
</div>
<div id="wizard-content-container">
<div ng-include src="vm.getStepTemplate()"></div>
</div>
<div id="wizard-navigation-container">
<div class="pull-right pull-right-padding">
<span class="btn-group">
<button ng-disabled="vm.currentStep <= 1" class="btn btn-default" name="previous" type="button" ng-click="vm.gotoStep(vm.currentStep - 1)"></i>Previous</button>
<button ng-disabled="vm.currentStep >= vm.steps.length" class="btn btn-primary" name="next" type="button" ng-click="vm.gotoStep(vm.currentStep + 1)">Next</button>
</span>
<button ng-disabled="vm.currentStep != vm.steps.length" class="btn btn-success" name="next" type="button" ng-click="vm.save()">Save</button>
</div>
</div>
</div>
step1.html
<div class="row">
<h3 class="text-center">Step 1: Please enter your full name</h3>
<br/>
<div class="col-md-6">
<input type="email" class="form-control" placeholder="First Name" ng-model="formData.firstName">
</div>
<div class="col-md-6">
<input type="email" class="form-control" placeholder="Last Name" ng-model="formData.lastName">
</div>
</div>
<br>
<div class="alert alert-danger" role="alert">
<strong>Oh snap!</strong> Please enter your full name.
</div>
ウィザード:ここ
は私のコードは、これまでのところですが、私はまたplunker hereを含めました.js
angular.module('dingocvWebApp')
.controller('WizardCtrl', function ($scope, stub) {
// Wizard methods
var vm = this;
vm.currentStep = 1;
vm.formData = {};
vm.steps = [
{
step: 1,
name: 'Name',
template: 'views/wizard/step1.html'
},
{
step: 2,
name: 'Email',
template: 'views/wizard/step2.html'
},
{
step: 3,
name: 'Job Category',
template: 'views/wizard/step3.html'
},
];
vm.gotoStep = function(newStep) {
vm.currentStep = newStep;
console.log(vm.formData.firstName);
};
vm.getStepTemplate = function(){
for (var i = 0; i < vm.steps.length; i++) {
if (vm.currentStep === vm.steps[i].step) {
return vm.steps[i].template;
}
}
};
// Step 1
// Step 2
// Step 3
$scope.jobCategories = stub.getJobCategories();
// Yeoman defaults
this.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'Karma'
];
});
:
index.htmlを は早送りボタンを
ng-disabled
ディレクティブはvm.canGoForward()
機能に応じて振る舞うので、変更されたのですか?ボタンはステップインデックスだけで有効/無効になっているようです。 – Humbertoまだ検証ステップを実装していないので、特定の条件が満たされない場合は、次のステップのボタンにアクセスできないように、 'vm.gotoStep'メソッドに入れようと考えていました。しかし、これを行うには、ユーザーが有効なファーストネームとラストネームを提供しているかどうかを確認する必要がありました。 – methuselah
「$スコープ」が「as」に関してどのように機能するのか誤解しているかもしれません。'$ scope'と' as 'を同じコントローラ内で混在させないようにすべきです。混乱の原因になります。これは、 'ng-include'がそれ自身の子' $ scope'を作成する指令であるという事実によってのみ増幅されます。 – Claies