Angularjs 隔离作用域中的绑定控制器属性

Angularjs 隔离作用域中的绑定控制器属性,angularjs,binding,directive,Angularjs,Binding,Directive,我试图了解AngularJS指令和范围绑定。我宁愿给出我的代码,然后问问题: 以下是我的指令定义: '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;

我试图了解AngularJS指令和范围绑定。我宁愿给出我的代码,然后问问题:

以下是我的指令定义:

'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;
});}());
这是我的html:

  <!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>

但是不起作用。如何做到这一点

我不确定双向绑定是否适用于控制器属性,但正确的语法应该是

   validationFlag="store.validationOnSubmit"

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

我应该在require属性中指定什么?require=“StoreController”?并接受它作为指令函数的第四个参数。不,您需要定义指令。您可以使用
ngController
     scope : {
           validationFlag : '=validationFlag'
       }
   validationFlag="store.validationOnSubmit"