Я пытаюсь перейти к директивам 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>
Теперь я хочу связать свойство validationOnSubmit с контроллером с validationFlag, и это должно быть двустороннее связывание. Я попытался добавить
<input type="text" name="test" require-on-submit validationFlag="validationOnSubmit"/>
и в директиве:
scope : {
validationFlag : '=validationFlag'
}
Но не работает. Как достичь этого?
Я не уверен, что 2-сторонняя привязка работает с полномочиями контроллера, но правильный синтаксис будет
validationFlag="store.validationOnSubmit"
StoreController будет инициализирован дважды. Один раз на элемент тела и один раз с директивой. Чтобы избежать путаницы, вы должны удалить контроллер из директивы, и если вам нужен доступ к помощи регулятора require
Собственость.
ngController