2014-05-21 81 views
1

上,我采用了棱角分明JS向导:角JS NG-如果链路

var myApp = angular.module('myApp', []); 

myApp.controller('WizardController', ['$scope', function($scope){ 

    $scope.user = {}; 

}]); 

我有这个下拉菜单的位置:

<select ng-model="user.agree"> 
       <option>Yes</option> 
       <option>No</option> 
      </select> 

,如果用户选择是,我想这个链接出现:

<a ng-click="gotoNextStep()" 
ng-show="showNextButton()" 
ng-if="user.agree == 'Yes'">Next</a> 

但是,当我到这一步,按钮不会出现在所有。我得到ng-if工作在<p ng-if="user.agree == 'Yes'">Blah Blah Blah</p>但由于某种原因,它不工作的链接。

gotoNextStep和showNextButton在myApp.directive('wizard', function(){之内,我的输入和链接在我的<wizard>之内,我已经定义了ng-app和wizardController。

这些是我的功能(以防万一):

$scope.showNextButton = function() { 
      return $scope.currentStepIndex > (1) && $scope.currentStepIndex < ($scope.steps.length - 1); 
     } 

$scope.gotoNextStep = function() { 
      toggleSteps($scope.currentStepIndex + 1); 
     } 
+0

你的链接标记是什么样的? – Jerrad

+0

你可以通过plunkr或jsfiddle分享吗? –

+0

我的链接标记,当我检查元素看起来像这样'<! - ngIf:user.agree =='是' - >'怪异 – user3618922

回答

1

ng-if工作正常。你的问题是ng-show,它隐藏了元素,因为它找不到showNextButton()。这是因为该元素被转换为step指令,其不再具有与wizard相同的范围,其中showNextButton()被定义。请注意,即使您删除了ng-showng-ifng-click也不会执行任何操作,因为gotoNextStep也不在范围内。

wizard指令在模板中已经有一个Next按钮,它显示下一步。为了实现你想要的,你可以修改showNextButton函数返回false,如果用户没有选择Yes

$scope.showNextButton = function() { 
    return $scope.user.agree == 'Yes' && $scope.currentStepIndex < $scope.steps.length; 
} 

这需要添加user.agreewizard范围..

scope: { 
    user: '=', 
    ... 
}, 

并在将它作为一个元素属性:

<wizard user="user" ...> 

这里是一个工作小提琴:http://jsfiddle.net/KQP66/

0

你需要涂放一个值,你的选择,angularjs不会采取optionvalue的文本。

<select ng-model="user.agree"> 
       <option value="yes">Yes</option> 
       <option value="no">No</option> 
      </select> 
+0

没有工作 – user3618922

+0

是的它确实http://plnkr.co/edit/J2mnpRcrz6hD2ElIELIY?p=preview – L105

+0

jsfiddle。net/68tW3(我似乎没有得到angularjs在提琴手工作,但我的代码在那里 - – user3618922