我正在使用AngularJS v1.4.1并且我有以下指令。这是我想工作但现在由于某种原因,当我的页面加载时,指令被调用两次。我检查了我能做的一切,但除了指令不再有效之外,我看不到从现在到现在有什么不同。具体而言,它似乎被调用了两次。
app.directive('pagedownAdmin', ['$compile','$timeout', function ($compile, $timeout) {
var nextId = 0;
var converter = Markdown.getSanitizingConverter();
converter.hooks.chain("preBlockGamut", function (text, rbg) {
return text.replace(/^ {0,3}""" *\n((?:.*?\n)+?) {0,3}""" *$/gm, function (whole, inner) {
return "<blockquote>" + rbg(inner) + "</blockquote>\n";
});
});
return {
require: 'ngModel',
replace: true,
scope: {
modal: '=modal'
},
template: '<div class="pagedown-bootstrap-editor"></div>',
link: function (scope, iElement, attrs: any, ngModel) {
var editorUniqueId;
if (attrs.id == null) {
editorUniqueId = nextId++;
} else {
editorUniqueId = attrs.id;
}
scope.showPagedownButtons = function () {
document.getElementById("wmd-button-bar-" + editorUniqueId).style.display = 'block';
};
var newElement = $compile(
'<div>' +
'<div class="wmd-panel">' +
'<div data-ng-hide="modal.wmdPreview == true" id="wmd-button-bar-' + editorUniqueId + '" style="display:none;"></div>' +
'<textarea ng-click="showPagedownButtons()" data-ng-hide="modal.wmdPreview == true" class="wmd-input" id="wmd-input-' + editorUniqueId + '">' +
'</textarea>' +
'</div>' +
'<div data-ng-show="modal.wmdPreview == true" id="wmd-preview-' + editorUniqueId + '" class="pagedownPreview wmd-panel wmd-preview"></div>' +
'</div>')(scope);
// iElement.html(newElement);
iElement.append(newElement);
var hide = function () {
document.getElementById("wmd-button-bar-" + editorUniqueId).style.display = 'none';
}
var editor = new Markdown.Editor(converter, "-" + editorUniqueId, {
handler: hide
});
// var $wmdInput = iElement.find('#wmd-input-' + editorUniqueId);
var $wmdInput = angular.element(document.getElementById("wmd-input-" + editorUniqueId));
var init = false;
editor.hooks.chain("onPreviewRefresh", function () {
var val = $wmdInput.val();
if (init && val !== ngModel.$modelValue) {
$timeout(function () {
scope.$apply(function () {
ngModel.$setViewValue(val);
ngModel.$render();
});
});
}
});
ngModel.$formatters.push(function (value) {
init = true;
$wmdInput.val(value);
editor.refreshPreview();
return value;
});
editor.run();
}
}
}]);
以下是调用该指令的代码:
<textarea data-pagedown-admin
data-modal="cos"
id="contentText"
name="contentText"
ng-minlength="5"
ng-model="cos.content.text"
ng-required="true"></textarea>
当我通过在“var editorUniqueId”上放置一个断点来调试指令时,我发现它会在那里进行两次。
有没有人有任何想法可能会发生什么?
答案 0 :(得分:0)
我过去做过这件事没有问题:
...
2015-12-11 10:43:35,081 | INFO | ctivemq.server]) | PListStoreImpl | 176 - org.apache.activemq.activemq-osgi - 5.12.1 | PListStore:[C:\CAD_JOBS\apache-servicemix-6.1.0\data\amq-broker\amq-broker\tmp_storage] started
2015-12-11 10:43:35,084 | INFO | ctivemq.server]) | ActiveMQServiceFactory$1 | 161 - org.apache.servicemix.bundles.spring-context - 3.2.14.RELEASE_1 | Publishing application context as OSGi service with properties {org.springframework.context.service.name=org.apache.activemq.activemq-osgi, Bundle-SymbolicName=org.apache.activemq.activemq-osgi, Bundle-Version=5.12.1}
2015-12-11 10:43:35,093 | ERROR | ctivemq.server]) | configadmin | 6 - org.apache.felix.configadmin - 1.8.4 | [org.osgi.service.cm.ManagedServiceFactory, id=813, bundle=176/mvn:org.apache.activemq/activemq-osgi/5.12.1]: Updating configuration org.apache.activemq.server.24d13a82-a253-4d1e-8355-bcbf0fff6927 caused a problem: Cannot start the broker
org.osgi.service.cm.ConfigurationException: null : Cannot start the broker
at org.apache.activemq.osgi.ActiveMQServiceFactory.updated(ActiveMQServiceFactory.java:120)[176:org.apache.activemq.activemq-osgi:5.12.1]
at Proxye6b76768_a1ce_4232_9f62_ee376293401b.updated(Unknown Source)[:]
at org.apache.felix.cm.impl.helper.ManagedServiceFactoryTracker.updated(ManagedServiceFactoryTracker.java:159)[6:org.apache.felix.configadmin:1.8.4]
at org.apache.felix.cm.impl.helper.ManagedServiceFactoryTracker.provideConfiguration(ManagedServiceFactoryTracker.java:93)[6:org.apache.felix.configadmin:1.8.4]
at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.provide(ConfigurationManager.java:1597)[6:org.apache.felix.configadmin:1.8.4]
at org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.run(ConfigurationManager.java:1540)[6:org.apache.felix.configadmin:1.8.4]
at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:103)[6:org.apache.felix.configadmin:1.8.4]
at java.lang.Thread.run(Thread.java:722)[:1.7.0_17]
Caused by: java.lang.IllegalArgumentException: Service object is not an instance of "org.springframework.core.env.EnvironmentCapable".
at org.apache.felix.framework.Felix.registerService(Felix.java:3386)[org.apache.felix.framework-4.2.1.jar:]
at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)[org.apache.felix.framework-4.2.1.jar:]
at org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.publishContextAsOsgiServiceIfNecessary(AbstractOsgiBundleApplicationContext.java:344)[165:org.springframework.osgi.core:1.2.1]
at org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.finishRefresh(AbstractOsgiBundleApplicationContext.java:237)[165:org.springframework.osgi.core:1.2.1]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)[161:org.apache.servicemix.bundles.spring-context:3.2.14.RELEASE_1]
at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$301(AbstractDelegatedExecutionApplicationContext.java:69)[165:org.springframework.osgi.core:1.2.1]
at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$1.run(AbstractDelegatedExecutionApplicationContext.java:186)[165:org.springframework.osgi.core:1.2.1]
at org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)[165:org.springframework.osgi.core:1.2.1]
at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.normalRefresh(AbstractDelegatedExecutionApplicationContext.java:182)[165:org.springframework.osgi.core:1.2.1]
at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$NoDependenciesWaitRefreshExecutor.refresh(AbstractDelegatedExecutionApplicationContext.java:89)[165:org.springframework.osgi.core:1.2.1]
at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.refresh(AbstractDelegatedExecutionApplicationContext.java:175)[165:org.springframework.osgi.core:1.2.1]
at org.apache.activemq.osgi.ActiveMQServiceFactory.updated(ActiveMQServiceFactory.java:102)[176:org.apache.activemq.activemq-osgi:5.12.1]
... 7 more
2015-12-11 10:43:35,095 | INFO | FelixStartLevel | BlueprintContainerImpl | 15 - org.apache.aries.blueprint.core - 1.4.4 | Bundle org.apache.servicemix.activemq.service/6.1.0 is waiting for dependencies [(objectClass=javax.transaction.TransactionManager)]
2015-12-11 10:43:35,101 | INFO | FelixStartLevel | BlueprintContainerImpl | 15 - org.apache.aries.blueprint.core - 1.4.4 | Bundle org.apache.servicemix.activemq.camel/6.1.0 is waiting for dependencies [(&(&(transacted=false)(name=default-cf))(objectClass=javax.jms.ConnectionFactory))]
2015-12-11 10:43:35,104 | INFO | FelixStartLevel | CXFActivator | 92 - org.apache.cxf.cxf-core - 3.1.4 | Adding the extensions from bundle org.apache.camel.camel-cxf-transport (231) [org.apache.camel.component.cxf.transport.CamelTransportFactory]
...