我有一个具有范围的控制器。有一个API调用返回一些数据,并将其存储在范围中。我的html应该检查该变量中是否有任何东西,并以不同的方式呈现事物。
html就像
一样简单(但不是确切的脚本)no comprehension:
0.027287796139717102
comprehension:
0.028979241847991943
我的js是
import co.paralleluniverse.fibers.Suspendable
import net.corda.core.flows.*
import net.corda.core.identity.Party
import net.corda.core.toFuture
import net.corda.core.utilities.getOrThrow
import net.corda.core.utilities.unwrap
import net.corda.testing.internal.chooseIdentity
import net.corda.testing.node.MockNetwork
import net.corda.testing.node.StartedMockNode
import org.junit.After
import org.junit.Before
import org.junit.Test
import java.time.Duration
import kotlin.test.assertEquals
class DummyFlowUnitTests2 {
lateinit var network: MockNetwork
lateinit var nodeA: StartedMockNode
lateinit var nodeB: StartedMockNode
lateinit var nodeC: StartedMockNode
lateinit var partyA: Party
lateinit var partyB: Party
lateinit var partyC: Party
@Before
fun setup() {
network = MockNetwork(listOf("com.corda.cordapp"))
//Create nodes.
nodeA = network.createNode()
nodeB = network.createNode()
nodeC = network.createNode()
partyA = nodeA.info.chooseIdentity()
partyB = nodeB.info.chooseIdentity()
partyC = nodeC.info.chooseIdentity()
nodeB.registerInitiatedFlow(SendPingAcceptorFlow::class.java)
nodeC.registerInitiatedFlow(SendPingAcceptorFlow::class.java)
}
@After
fun tearDown() {
network.stopNodes()
}
@Test
fun `can ping counterparties`() {
val acceptorFlowFutures = listOf(nodeB, nodeC).map {
it.registerInitiatedFlow(SendPingAcceptorFlow::class.java).toFuture()
}
nodeA.startFlow(SendPingInitiatorFlow("Ping!", listOf(partyB, partyC)))
network.runNetwork()
acceptorFlowFutures.forEach {
val result = it
.getOrThrow(Duration.ofMinutes(1)) // Timeout failure here
.stateMachine
.resultFuture
.getOrThrow(Duration.ofMinutes(1)) as String
assertEquals("Ping!", result)
}
}
@InitiatingFlow
@StartableByRPC
data class SendPingInitiatorFlow(val msg: String, val parties: List<Party>) : FlowLogic<Unit>() {
@Suspendable
override fun call() {
parties.map { initiateFlow(it) }.forEach {
it.send(msg)
}
}
}
@InitiatedBy(SendPingInitiatorFlow::class)
data class SendPingAcceptorFlow(val othersideSession: FlowSession) : FlowLogic<String>() {
@Suspendable
override fun call(): String {
return othersideSession.receive<String>().unwrap { it }
}
}
}
现在,此功能可以正常工作,并且味精确实已加载到<div ng-if='!ctrl.$scope.some_msg'>
<p>Some display, contain is not important</p>
<button on-click=some_func()></button>
</div>
<div ng-if='ctrl.$scope.some_msg'>
<p>{{ctrl.$scope.some_msg}}</p>
</div>
中,并使用some_func() {
this.callAPI().then( res => {
this.$scope.msg = res;
});
进行了测试,但是直到执行其他操作之前,我的html才更新。在这种情况下,单击该按钮后该按钮仍将存在,而我必须再次单击以进行网页更改。为什么会这样?