我的角度应用程序中有以下表格
<div id="edit-customer-form">
<form data-ng-submit="formCtrl.submit()">
<label data-ng-click="formCtrl.out()">Name
<input type="text" data-ng-model="formCtrl.customer.name"/>
</label>
<label>Consignee
<input type="text" data-ng-model="formCtrl.customer.consignee"/>
</label>
<label>Invoice To
<input type="text" data-ng-model="formCtrl.customer.invoice_to"/>
</label>
<label>Notify Party
<input type="text" data-ng-model="formCtrl.customer.notify_party"/>
</label>
<label>Point of Sale
<input type="text" data-ng-model="formCtrl.customer.point_of_sale"/>
</label>
<label>Country
<select data-ng-model="formCtrl.selectedCountry"
data-ng-options="country.Country.name for country in formCtrl.countries"></select>
</label>
<label>Port
<select data-ng-model="formCtrl.customer.port_id"
data-ng-options="port.id as port.name for port in formCtrl.ports"></select>
</label>
<button type="submit">Save</button>
<button type="button" data-ng-click="formCtrl.cancel()">Cancel</button>
</form>
</div>
该元素是指令的模板editCustomerForm
。
该指令很长,因此除非需要,否则我不会在此处发布整个内容,但该功能submit()
目前仅生成控制台日志。
form.submit = function () {
console.log('submitting');
};
提交表单后,urlwebsite.com/#/customers
变为website.com/?#/customers
. 这会导致整页刷新。
?
添加到 url 后,一切都按预期工作,直到单击链接,再次刷新页面并重置 url 。
我已经使用 angular 很长时间了,但我从来没有遇到过这种行为。这是什么原因造成的?
编辑: 这是我的指令的声明方式。
.directive('editCustomerForm', [
'customerService', 'countryService', 'portService', 'errorService',
function (customerService, countryService, portService, errorService) {
return {
restrict: 'E',
scope: {
pushTo: '&',
customer: '&'
},
templateUrl: '/partials/elements/customers/forms/edit.html',
controller: function ($scope) {
var form = this;
form.pushTo = $scope.pushTo;
form.countries = [];
form.ports = [];
form.selectedCountry = {};
form.selectedPort = {};
var clone = function (obj) {
return $.extend(true, {}, obj);
};
form.customer = clone($scope.customer());
...
form.submit = function () {
console.log('submitting');
//customerService.edit(form.customer, successfulEdit(form.customer), handleError)
};
form.cancel = function () {
form.customer = {};
form.selectedCountry = {};
form.selectedPort = {};
form.pushTo().cancelEditCustomer();
};
},
controllerAs: 'formCtrl'
};
}]);
更新
所以问题似乎就在这里
<div id="edit-customer-modal" class="reveal-modal" data-reveal-modal="{{customers.modalOn ? 'show-modal' : 'hide-modal'}}" data-reveal>
<edit-customer-form push-to="customers" customer="customers.getSelectedEditCustomer()"></edit-customer-form>
</div>
我在基础 5 模态中使用我的表单的地方。我已经reveal-modal
为模态做了一个指令。
这是模态指令代码
app.directive('revealModal', function () {
return function (scope, elem, attrs) {
scope.$watch(function(){return attrs.revealModal}, function (val) {
if (val === 'show-modal') {
elem.foundation('reveal', 'open');
} else {
elem.foundation('reveal', 'close');
}
});
}
});
当表单不在此块内时,它会正确执行。
我希望能够在模态中使用我的表单,所以任何建议都将不胜感激。
我的模态指令也与我的表单指令位于不同的模块中,如果这有什么不同的话。