在隔离范围内绑定控制器属性

时间:2015-07-05 07:09:45

标签: angularjs binding directive

我正在尝试使用AngularJS指令和范围绑定。我宁愿给我的代码,然后问问题:

这是我的指令定义:

$(document).ready(function() {
    $('#btn1').click(function() {
        $('li').last().after('<li>' + $( "#txt1" ).val() + '</li>');
    });
});

这是我的HTML:

'use strict';
 (function(){
 var app = angular.module('gemStore', []);
 var gem = {name:"Pearl",price:22.5 };
 app.controller("StoreController",function(){
   var self = this;
    self.product = gem;
    self.validateOnSubmit="myForm";

});
app.directive("requireOnSubmit",function(){
   var directiveDefinitionObject = {
       restrict:'A',
       scope : {
           validationFlag : '='
       },
       link : function(scope,ele,attr){
           console.log(scope.validationFlag);
         },
       controller : "StoreController",
       controllerAs : "store",
       bindToController : true
   };
    return directiveDefinitionObject;
});}());

现在我想在控制器上使用validationFlag绑定validationOnSubmit属性,它应该是双向绑定。       我试过添加

  <!DOCTYPE html>
  <html ng-app="gemStore">
<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body ng-controller="StoreController as store">
    <div>
        <h3>{{store.product.name}} </h3>  <h3>{{store.product.price}} </h3>
    </div>
    <form name="myForm">
        <input type="text" name="test" require-on-submit />
    </form>

</body>
<script type="text/javascript" src="resources/js/angular.min.js"></script>
<script type="text/javascript" src="app.js"></script>

并在指令中:

 <input type="text" name="test" require-on-submit      validationFlag="validationOnSubmit"/>

但是没有用。怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

我不确定2路绑定是否适用于控制器属性,但正确的语法是

   validationFlag="store.validationOnSubmit"

StoreController将初始化两次。一旦使用body元素,一次使用指令。为避免混淆,您应该从指令中删除控制器,如果需要访问控制器,请使用require属性。