父指令范围内不可用的angular指令变量

时间:2015-09-14 12:45:56

标签: javascript angularjs

我目前被困在希望是一个简单的问题:

我有一个controller.js

app.controller('WizardCtrl', function ($scope) {
  $scope.send = function() {
    console.log($scope.isPasswordChanged)
  }
});

我的view.html

isPasswordChanged: {{ isPasswordChanged }} <br>
<update-password-field is-changed="isPasswordChanged"></update-password-field>
<button ng-click="send()"></button>

我的指示.js

app.directive('updatePasswordField', function () {
  return {
    restrict: 'E',
    scope: {
      isChanged: "="
    },
    templateUrl: "password-field-directive.html",
    link: function (scope) {
        // some magic to set isChanged value to true of false 
    }
  }
});

所以在我的view.html中,我可以看到&#34; isPasswordChanged&#34;的更改,以某种方式在我的$ scope中,但如果我在console.log($ scope)中,那么&#34; isPasswordChanged&# 34;不存在。

为什么以及如何让它出现?

2 个答案:

答案 0 :(得分:3)

我认为您需要在控制器的功能()中加入$scope。换句话说:

app.controller('WizardCtrl', ['$scope', function ($scope) {

否则我不相信它会起作用。

答案 1 :(得分:0)

原来这可能与我的结构有关。

我改变了

is-confirmed="isPasswordConfirmed"

is-confirmed="ui.isPasswordConfirmed"

“ui”是我在$ scope中定义的空对象。

它的工作。我尝试了一个独立的例子

http://plnkr.co/edit/bkMZTEWgkrmVfxqiYCcB?p=preview

但是如果没有这些变化,它也可能与角度版本不匹配。